Optimization of a State-to-State Transfer in a Two-Level-System

In [1]:
# NBVAL_IGNORE_OUTPUT
%load_ext watermark
#%load_ext autoreload
#%autoreload 2
import qutip
import numpy as np
import scipy
import matplotlib
import matplotlib.pylab as plt
import krotov
import os
from scipy.signal import savgol_filter
%matplotlib notebook
%watermark -v --iversions
π = np.pi
sqrt = np.sqrt
basis = qutip.basis
tensor = qutip.tensor
coherent = qutip.coherent
matplotlib       3.0.2
matplotlib.pylab 1.15.4
scipy            1.2.0
qutip            4.3.1
numpy            1.15.4
krotov           0.3.0
CPython 3.7.2
IPython 7.2.0

$\newcommand{tr}[0]{\operatorname{tr}} \newcommand{diag}[0]{\operatorname{diag}} \newcommand{abs}[0]{\operatorname{abs}} \newcommand{pop}[0]{\operatorname{pop}} \newcommand{aux}[0]{\text{aux}} \newcommand{opt}[0]{\text{opt}} \newcommand{tgt}[0]{\text{tgt}} \newcommand{init}[0]{\text{init}} \newcommand{lab}[0]{\text{lab}} \newcommand{rwa}[0]{\text{rwa}} \newcommand{bra}[1]{\langle#1\vert} \newcommand{ket}[1]{\vert#1\rangle} \newcommand{Bra}[1]{\left\langle#1\right\vert} \newcommand{Ket}[1]{\left\vert#1\right\rangle} \newcommand{Braket}[2]{\left\langle #1\vphantom{#2} \mid

2\vphantom{#1}\right\rangle}

\newcommand{op}[1]{\hat{#1}} \newcommand{Op}[1]{\hat{#1}} \newcommand{dd}[0]{\,\text{d}} \newcommand{Liouville}[0]{\mathcal{L}} \newcommand{DynMap}[0]{\mathcal{E}} \newcommand{identity}[0]{\mathbf{1}} \newcommand{Norm}[1]{\lVert#1\rVert} \newcommand{Abs}[1]{\left\vert#1\right\vert} \newcommand{avg}[1]{\langle#1\rangle} \newcommand{Avg}[1]{\left\langle#1\right\rangle} \newcommand{AbsSq}[1]{\left\vert#1\right\vert^2} \newcommand{Re}[0]{\operatorname{Re}} \newcommand{Im}[0]{\operatorname{Im}}$ The purpose of this example is not to solve an especially interesting physical problem but to give a rather simple example of how the package can be used in order to solve an optimization problem.

Define the Hamiltonian

In the following the Hamiltonian, guess field and states are defined.

The Hamiltonian $\op{H}_{0} = - \omega \op{\sigma}_{z}$ represents a simple qubit with energy level splitting $\omega$ in the basis $\{\ket{0},\ket{1}\}$. The control field $\epsilon(t)$ is assumed to couple via the Hamiltonian $\op{H}_{1}(t) = \epsilon(t) \op{\sigma}_{x}$ to the qubit, i.e., the control field effectively drives transitions between both qubit states. For now, we initialize the control field as constant.

In [397]:
L = 3
N = 10
α = 2

Plotting functions

In [475]:
def to_two_level(state):
    if state.type is 'oper':
        return qutip.Qobj(state[0:2,0:2])
    else:
        return qutip.Qobj(state[0:2])

def plot_population(n, tlist):
    fig, ax = plt.subplots(figsize=(15,4))
    leg = []
    for i in range(len(n)):
        ax.plot(tlist, n[i], label=str(i))
        leg.append(str(i))
    ax.legend()
    ax.set_xlabel('Time (ns)')
    ax.set_ylabel('Occupation')
    ax.legend(leg)
    plt.show(fig)

def plot_pulse(pulse, tlist, T=None, ylim=False):
    fig, ax = plt.subplots(figsize=(15,4))
    if callable(pulse):
        pulse = np.array([pulse(t, args=None) for t in tlist])
    if np.any(np.iscomplex(pulse)):
        ax.plot(tlist, np.real(pulse))
        ax.plot(tlist, np.imag(pulse))
        ax.legend(['Re', 'Im'])
    else:
        ax.plot(tlist, pulse)
    if T is not None:
        ax.plot(tlist, [S(t, T) for t in tlist], color='k', linestyle='--', linewidth=1)
        ax.plot(tlist, [-S(t, T) for t in tlist], color='k', linestyle='--', linewidth=1)
    ax.set_xlabel('Time (ns)')
    ax.set_ylabel('Pulse amplitude')
    if ylim is False:
        ax.set_ylim([-pulse_max(0)*1.05,pulse_max(0)*1.05])
    plt.show(fig)

def plot_system(ψ):
    bl = qutip.Bloch()
    bl.add_states(to_two_level(ψ.ptrace(0)))
    bl.show()
    qutip.visualization.plot_wigner_fock_distribution(to_two_level(ψ.ptrace(1)))
def plot_resonator(ψ):
    fig, ax = plt.subplots(1,len(ψ), figsize=(3*len(ψ),3))
    if len(ψ)<=1:
        ψ = ψ[0]
        axis = ax
        qutip.visualization.plot_wigner(ψ.ptrace(1), fig=fig, ax=axis, alpha_max = 2*α)
        axis.axis_equal = True
    else:
        for (ϕ, axis) in zip(ψ, ax):
            qutip.visualization.plot_wigner(ϕ.ptrace(1), fig=fig, ax=axis, alpha_max = 2*α)
            axis.axis_equal = True
        
def plot_cardinal(ψ):
    bl = qutip.Bloch()
    bl.vector_color = ['r','g','b','g','b','r']
    [bl.add_states(to_two_level(ϕ.ptrace(0)), 'vector') for ϕ in ψ]
    bl.show()

def plot_all(dyn, ψ):
    ψ_i = [g.states[0] for g in dyn]
    ψ_f = [g.states[-1] for g in dyn]
    ψ_t = [ϕ[1] for ϕ in ψ]
    plot_cardinal(ψ_i)
    plot_resonator(ψ_i)
    plot_cardinal(ψ_t)
    plot_resonator(ψ_t)
    plot_cardinal(ψ_f)
    plot_resonator(ψ_f)
def plot_evolution(dyn, steps=1):
    for d in dyn:
        points = [to_two_level(s.ptrace(0)) for s in d.states[0:-1:steps]]
        bl = qutip.Bloch()
        bl.vector_color = 'r'
        bl.point_color = 'r'
        bl.point_marker = 'o'
        bl.add_states(points, 'point')
        bl.show()
        bl = qutip.Bloch()
        bl.vector_color = 'r'
        bl.point_color = 'r'
        bl.point_marker = 'o'
        bl.view = [bl.view[0], 80]
        bl.add_states(points, 'point')
        bl.show()
def get_objectives(T=None):
    #if use_rotating:
    #    objectives = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H) for ψ in state_rot(ϕ, T)]
    #else:
    objectives = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H) for ψ in ϕ]
    return objectives
def plot_matrix_final_target(target_state, final_state, xlabels, ylabels, el=30, az=135):
    fig, ax = qutip.visualization.matrix_histogram(final_state * target_state.dag(), xlabels, ylabels, colorbar=False, limits=[-1,1])
    qutip.visualization.matrix_histogram(proj(target_state), xlabels, ylabels, colorbar=False, limits=[-1,1], fig=fig, ax=ax)
    facecolors = np.zeros((6*L**2,4))*0.1
    edgecolors = np.tile([0,0,0,0.9], (6*L**2,1))
    ax.get_children()[2].set_facecolors(facecolors)
    ax.get_children()[2].set_edgecolors(edgecolors)
    ax.set_zticks(np.arange(-1,1,0.25))
    ax.view_init(elev=el, azim=az)
    return (fig, ax)
In [399]:
def fid(result, target):
    return (np.abs((result.states[-1].dag()*target).full())**2)[0][0]
def proj(ψ, ϕ=None):
    if ϕ is None:
        return ψ * ψ.dag()
    else:
        return ψ * ϕ.dag()
In [411]:
cat_0 = (coherent(N, α) + coherent(N,-α)).unit()
cat_1 = (coherent(N, 1j*α) + coherent(N,-1j*α)).unit()

Si = qutip.operators.identity(L)
Ri = qutip.operators.identity(N)
I = tensor(Si,Ri)

zero_q = qutip.operators.qzero(L)
zero_r = qutip.operators.qzero(N)
zero_q = tensor(zero_q, Ri)
zero_r = tensor(Si, zero_r)

zero = zero_q + zero_r

σ_z = proj(qutip.basis(L, 0)) - proj(qutip.basis(L, 1))
σ_y = 1j*(proj(qutip.basis(L, 1),qutip.basis(L, 0)) - proj(qutip.basis(L, 0), qutip.basis(L, 1)))
σ_x = proj(qutip.basis(L, 0),qutip.basis(L, 1)) - proj(qutip.basis(L, 1), qutip.basis(L, 0))
σ_z = tensor(σ_z, Ri)
σ_y = tensor(σ_y, Ri)
σ_x = tensor(σ_x, Ri)

b = qutip.operators.destroy(L)
a = qutip.operators.destroy(N)
b = tensor(b, Ri)
a = tensor(Si, a)

ω_r = 8.3056 * 2 * π      # resonator frequency
ω_q = 6.2815 * 2 * π      # qubit frequency
K_q   = -2*π*297e-3    # Kerr qubit 200-300 MHz
K_r   = 2*π*4.5e-6   # Kerr res 1-10 Khz

ω_ef = ω_q + K_q
ω_gf = ω_q + K_q/2

χ = 0.025 * 2 * π   # parameter in the dispersive hamiltonian

Δ = abs(ω_r - ω_q)    # detuning
g = sqrt(Δ * χ)  # coupling strength that is consistent with chi
γ = 1e1

use_rotating = True
def hamiltonian(ω=1.0, ampl0=1, use_rotating=True, pulses=None, tlist=None, start_pulse=None, T=1, phase=0, σ=σ):
    """Two-level-system Hamiltonian
    
    Args:
        ω (float): energy separation of the qubit levels
        ampl0 (float): constant amplitude of the driving field
    """
    
    #H_occ = w_r*a.dag()*a + w_q*b.dag()*b
    if L==3:
        H_occ_q = qutip.Qobj(np.diag([0, ω_q, 2*ω_q]))
    else:
        H_occ_q = qutip.Qobj(np.diag([0, ω_q]))
    H_occ_q = tensor(H_occ_q, Ri)
    H_occ_r = ω_r * a.dag()*a
    H_occ =  H_occ_q + H_occ_r
    
    
    use_dispersive = True
    use_kerr = True
    #if use_dispersive:
    #    H_coup = - χ * a.dag()*a * b.dag()*b
        #H_coup =  χ * (a.dag()*a + I/2) * σ_z
    #else:
    #    H_coup = g * (a.dag() * b + a * b.dag())
    #    H_coup = g * σ_x *a.dag() + a
    if use_kerr:
        H_kq = - K_q/2 * b.dag()**2 * b**2
        H_kr = - K_r/2 * a.dag()**2 * a**2
    else:
        H_kq = zero_q
        H_kr = zero_r
    
    H_d = zero_q + zero_q
    
    if use_rotating:
        H_d += H_kq + H_kr #+ H_coup
        
        H_qr = (b.dag() + b)
        H_qi = 1j*(b.dag() - b)
        H_rr = (a.dag() + a)
        H_ri = 1j*(a.dag() - a)
        
        H_cc = g*(a*b + a.dag()*b.dag())
        H_cs = g*1j*(a*b - a.dag()*b.dag())
        
        if start_pulse is None:
            ϵ_qr = lambda t, args: ampl0
            ϵ_qi = lambda t, args: ampl0
            ϵ_rr = lambda t, args: ampl0
            ϵ_ri = lambda t, args: ampl0
        else:
            ϵ_qr = shape_field(lambda t, args: ampl0, start_pulse, T, σ)
            ϵ_qi = shape_field(lambda t, args: ampl0, start_pulse, T, σ)
            ϵ_rr = shape_field(lambda t, args: ampl0, start_pulse, T, σ)
            ϵ_ri = shape_field(lambda t, args: ampl0, start_pulse, T, σ)
        
        if pulses:
            ϵ_qr = pulses[0]
            ϵ_qi = pulses[1]
            ϵ_rr = pulses[2]
            ϵ_ri = pulses[3]

        ϵ_cc = lambda t, args: np.cos((ω_q - ω_r)*t)
        ϵ_cs = lambda t, args: np.sin((ω_q - ω_r)*t)
        
        return [H_d, [H_qr, ϵ_qr], [H_qi, ϵ_qi], [H_rr, ϵ_rr], [H_ri, ϵ_ri], [H_cc, ϵ_cc], [H_cs, ϵ_cs]]
    else:
        H_d += H_occ + H_kerr#+ H_coup
        
        H_q = b
        H_qc = b.dag()
        H_rr = ZERO
        H_ri = ZERO
        

        ϵ_q = lambda t, args: 1j*ampl0*np.exp(1j*ω_q*t)
        ϵ_qc = lambda t, args: -1j*ampl0*np.exp(-1j*ω_q*t)
        #ϵ_rr = lambda t, args: ampl0
        #ϵ_ri = lambda t, args: ampl0
        
        if pulses:
            ϵ_q = pulses[0]
            ϵ_qc = pulses[1]
            #ϵ_rr = np.zeros(len(pulses[0]))
            #ϵ_ri = np.zeros(len(pulses[0]))
        
        return [H_d, [H_q, ϵ_q], [H_qc, ϵ_qc]]#, [H_rr, ϵ_rr], [H_ri, ϵ_ri]]

def coeffs_to_state(c,init = True):
    if init:
        ψ = tensor((c[0]*basis(L,0) + c[1]*basis(L,1)).unit() , (basis(N,0)))
    else:
        ψ = tensor((basis(L,0)) , (c[0]*cat_0 + c[1]*cat_1).unit())
    return ψ

def states(coeffs):
    return [[coeffs_to_state(c,True),coeffs_to_state(c,False)] for c in coeffs]

Define the optimization target

First we define the time grid of the dynamics, i.e., by taking the following values as an example, we define the initial state to be at time $t=0$ and consider a total propagation time of $T=5$. The entire time grid is divided into $n_{t}=500$ equidistant time steps.

In [412]:
def pulse_max(σ):
    A = 1.56246130414 # Chosen such that the integral of any Blackman pulse = π
    A = A/2
    σ = np.max((σ,3))
    return A/(np.sqrt(2*π)*σ)
In [413]:
σ_max = 3 # ns (gaussian pulse limit)
amp_max = pulse_max(0)

T_q = (2*π)/ω_q
T = 18
σ = T/6
steps = 4**3*int(np.ceil(T))
tlist = np.linspace(0, T, steps)


H = hamiltonian(ampl0=1, use_rotating=True, phase=np.exp(-1j*ω_q*T))
#coeffs = [(1,0), (1,-1), (1,1j), (1,1), (1,-1j), (0,1)]
coeffs = [(1,0)]
st = states(coeffs)
ϕ = [[ tensor(basis(L,1), basis(N,0)), tensor((basis(L,0)).unit(), (coherent(N,1))) ]]
F_err = 1e-5
F_oc_tar = 1-F_err

Next, we define the optimization targets, which is technically a list of objectives, but here it has just one entry defining a simple state-to-state transfer from initial state $\ket{\Psi_{\init}} = \ket{0}$ to the target state $\ket{\Psi_{\tgt}} = \ket{1}$, which we want to reach at final time $T$. Note that we also have to pass the Hamiltonian $\op{H}(t)$ that determines the dynamics of the system to the optimization objective.

In [414]:
import copy
def state_rot(ϕ, T):
    ϕ = copy.deepcopy(ϕ)
    ϕ_q = ϕ.ptrace(0)
    if np.sum(np.array(ϕ[0][1].full())==0) != L-1:
        if L == 3:
            rot_evo = qutip.Qobj([[1, 0, 0],[0, np.exp(-1j * ω_q * T), 0],[0, 0, 0]])
        else:
            rot_evo = qutip.Qobj([[1, 0],[0, np.exp(-1j * ω_q * T)]])
        
        ϕ[0][1] = rot_evo * ϕ[0][1]
    #ϕ_r = ϕ.ptrace(0)
    return ϕ

if use_rotating:
    objectives = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H) for ψ in ϕ]
    #objectives = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H) for ψ in state_rot(copy.deepcopy(ϕ), T)]
else:
    objectives = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H) for ψ in ϕ]

In addition, we have to define and assign a shape function $S(t)$ for the update in each control iteration to each control field that will be updated. This shape usually takes care of experimental limits such as the necessity of finite ramps at the beginning and end of the control field or other conceivable limitations for field shapes: wherever $S(t)$ is zero, the optimization will not change the value of the control from the original guess.

At this point, we also change the initial control field $\epsilon_{0}(t)$ from a constant to a shaped pulse that switches on smoothly from zero and again switches off at the final time $T$. We re-use the shape function $S(t)$ that we defined for the updates for this purpose (although generally, $S(t)$ for the updates has nothing to with the shape of the control field).

In [415]:
def S(t, T=6*σ, σ=σ):
    rise_time = 2
    return amp_max*krotov.shapes.flattop(t, t_start=0, t_stop=T, t_rise=rise_time, t_fall=rise_time, func='sinsq')

def start_pulse(t, T=6*σ, σ=σ):
    if σ is not None:
        return pulse_max(σ)*krotov.shapes.blackman(t, t_start=0, t_stop=6*σ)
    else:
        return krotov.shapes.blackman(t, t_start=0, t_stop=T)
def zero_pulse(t, T=T, σ=4):
    return 0
def unit_pulse(t, T=T, σ=4):
    return 1

def shape_field(ϵ, sf, T, σ):
    """Applies the shape function S(t) to the guess field"""
    ϵ_shaped = lambda t, args: ϵ(t, args)*sf(t, T=T, σ=σ)
    return ϵ_shaped

S_unit = [unit_pulse]*4
S_zero = [zero_pulse]*4
#S_start = [lambda t, T=T, σ=σ: 0.01*unit_pulse(t, T=T, σ=σ),start_pulse]
S_start = [zero_pulse, start_pulse, zero_pulse, start_pulse]
S_funs = [S]*4
for i, H_i in enumerate(H[1:5]):
    H_i[1] = shape_field(H_i[1], S_start[i], T, σ)

Having defined the shape function $S(t)$ and having shaped the guess field, we now tell the optimization to also use $S(t)$ as the update-shape for $\epsilon_0(t)$. In addition, we have to choose lambda_a for each control field. It controls the update magnitude of the respective field in each iteration.

It is convenient to introduce the function print_fidelity, which can be passed to the optimization procedure and will be called after each iteration and thus provides additional feedback about the optimization progress.

Simulate dynamics of the guess field

Before heading towards the optimization procedure, we first simulate the dynamics under the guess field $\epsilon_{0}(t)$.

The following plot shows the guess field $\epsilon_{0}(t)$, which is, as chosen above, just a constant field (with a smooth switch-on and switch-off)

In [416]:
for i, H_i in enumerate(H[1:]):
    plot_pulse(H_i[1], tlist, ylim=(i > 3))

The next line solves the equation of motion for the defined objective, which contains the initial state $\ket{\Psi_{\init}}$ and the Hamiltonian $\op{H}(t)$ defining its evolution.

In [417]:
guess_dynamics = [ob.mesolve(tlist, progress_bar=True, options=qutip.Options(nsteps=50000)) for ob in objectives]
10.1%. Run time:   0.70s. Est. time left: 00:00:00:06
20.1%. Run time:   1.38s. Est. time left: 00:00:00:05
30.0%. Run time:   2.13s. Est. time left: 00:00:00:04
40.0%. Run time:   2.86s. Est. time left: 00:00:00:04
50.0%. Run time:   3.66s. Est. time left: 00:00:00:03
60.1%. Run time:   4.64s. Est. time left: 00:00:00:03
70.1%. Run time:   5.80s. Est. time left: 00:00:00:02
80.0%. Run time:   6.70s. Est. time left: 00:00:00:01
90.0%. Run time:   7.50s. Est. time left: 00:00:00:00
Total run time:   8.38s
In [418]:
def qubit_occupation(dyn):
    occ = [basis(L,i)*basis(L,i).dag() for i in range(0,L)]
    states = [state.ptrace(0) for state in dyn.states]
    n = qutip.expect(occ, states)
    plot_population(n, dyn.times)
def resonator_occupation(dyn):
    occ = [basis(N,i)*basis(N,i).dag() for i in range(0,N)]
    states = [state.ptrace(1) for state in dyn.states]
    n = qutip.expect(occ, states)
    plot_population(n, dyn.times)

def plot_norm(result):
    state_norm = lambda i: result.states[i].norm()
    states_norm=np.vectorize(state_norm)

    fig, ax = plt.subplots()
    ax.plot(result.times, states_norm(np.arange(len(result.states))))
    ax.set_title('Norm loss', fontsize = 15)
    ax.set_xlabel('Time (ns)')
    ax.set_ylabel('State norm')
    plt.show(fig)
In [419]:
def desuperposition(ϕ, f):
    ϕ_f = copy.deepcopy(ϕ)
    for (i, s) in enumerate(ϕ_f.full()):
        if np.abs(s)[0] < f:
            ϕ_f.data[i] = 0
    ϕ_f = ϕ_f.unit()
    for (i, s) in enumerate(ϕ_f.full()):
        if np.abs(s)[0] == 1:
            ϕ_f.data[i] = 1
    return ϕ_f
In [420]:
final_state = guess_dynamics[0].states[-1]

dm = final_state * ϕ[0][1].dag()
fid = np.abs((final_state.dag() * ϕ[0][1]).full()[0][0])**2
print('Fidelity: {}'.format(fid))
#qutip.visualization.matrix_histogram_complex(dm, limits=[0,1])
plot_cardinal([ϕ[0][0].ptrace(0), ϕ[0][1].ptrace(0), final_state.ptrace(0)])
qutip.visualization.plot_wigner_fock_distribution(ϕ[0][1].ptrace(1))
qutip.visualization.plot_wigner_fock_distribution(final_state.ptrace(1))
Fidelity: 0.10861095586782905
Out[420]:
(<Figure size 576x288 with 2 Axes>,
 array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fec650fd978>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x7fec650e5ba8>],
       dtype=object))
In [421]:
qubit_occupation(guess_dynamics[0])
resonator_occupation(guess_dynamics[0])
#plot_norm(guess_dynamics[0])

The plot of the population dynamics shows that the guess field does not transfer the initial state $\ket{\Psi_{\init}} = \ket{0}$ to the desired target state $\ket{\Psi_{\tgt}} = \ket{1}$.

In [422]:
#plot_all(guess_dynamics, ϕ)
plot_evolution(guess_dynamics, steps=5)
In [423]:
qubit_pulses = [H[2][1](t, 0) for t in tlist]
res_pulses = [H[4][1](t, 0) for t in tlist]
#qubit_pulses_filtered = apply_spectral_filter(copy.deepcopy(qubit_pulses), tlist, 0, 0.5)
plot_spectrum(qubit_pulses, tlist, mark_freq=[0, -K_q, -K_q/2], pos=0, xlim=[-2*π,2*π], title="Qubit")
plot_spectrum(res_pulses, tlist, mark_freq=[0, -K_r, -K_r/2], pos=0, xlim=[-π/4,π/4], title="Resonator")
#plot_spectrum(qubit_pulses_filtered, tlist, mark_freq=[0, K_q], pos=0, xlim=[-2*K_q,2*K_q])
#plot_pulse(qubit_pulses, tlist)
#plot_pulse(qubit_pulses_filtered, tlist)
#plot_spectrum(qubit_pulses[1], time_list, mark_freq=[ω_q, ω_q + K_q, ω_q - K_q], pos=0)

Optimize

In the following we optimize the guess field $\epsilon_{0}(t)$ such that the intended state-to-state transfer $\ket{\Psi_{\init}} \rightarrow \ket{\Psi_{\tgt}}$ is solved.

The cell below carries out the optimization. It requires, besides the previously defined optimization objectives, information about the optimization functional $F$ (via chi_constructor) and the propagation method that should be used. In addition, the number of total iterations is required and, as an option, we pass an info-hook that after each iteration combines a complete printout of the state of the optimization with the print_fidelity function defined above.

Here, we choose $F = F_{re}$ with \begin{equation}

F_{re}

\Re\Braket{\Psi(T)}{\Psi_{\tgt}} \end{equation}

with $\ket{\Psi(T)}$ the forward propagated state of $\ket{\Psi_{\init}}$.

In [97]:
pulse_options = {H_i[1]: dict(lambda_a=5, shape=S_funs[i]) for i, H_i in enumerate(H[1:])}
In [98]:
ω_0 = 0
ω_1 = np.abs(K_q/2)
In [478]:
def F_oc(fw_states_T, objectives, tau_vals=None, **kwargs):
    return np.abs(krotov.functionals.f_tau(fw_states_T, objectives, tau_vals, **kwargs))**2

def calc_fidelity(tau_vals):
    return np.abs(np.sum(tau_vals)/len(tau_vals))**2

def print_fidelity(**args):
    fid = calc_fidelity(np.array(args['tau_vals']))
    print("          F_t = {} | F = {} | F_t - F = {}".format(F_oc_tar, fid, F_oc_tar-fid))
def plot_fid_convergence(info_vals):
    fig, ax = plt.subplots(1,1)
    ax.plot(info_vals)
    ax.set_xticks(np.arange(0, len(info_vals), step=1))
    ax.set_xlabel('Iteration')
    ax.set_ylabel('Fidelity')
    #ax.set_ylim((-0.2,.2))
    plt.show()
def plot_fid_convergence(ax, info_vals, T):
    ax.plot3D(range(0,len(info_vals)), [T]*len(info_vals), info_vals)
def modify_params(**kwargs):
    
    spectral_filtering = False
    
    if spectral_filtering:
        # Spectral filtering
        tlist = kwargs['tlist']
        dt = tlist[1] - tlist[0]  # assume equi-distant time grid
        n = len(tlist) - 1  # = len(pulse)
        # remember that pulses are defined on intervals of tlist
        ω = np.abs(np.fft.fftfreq(n, d=dt / (2.0 * π)))
        # the normalization factor 2π means that w0 and w1 are angular
        # frequencies, corresponding directly to energies in the Hamiltonian
        # (ħ = 1).
        flt = (ω_0 <= ω) * (ω <= ω_1)
        # flt is the (boolean) filter array, equivalent to an array of values 0
        # and 1 

        shape_arrays = kwargs['shape_arrays']
        for (i, (pulse, shape)) in enumerate(zip(kwargs['optimized_pulses'], shape_arrays)):
            spectrum = np.fft.fft(pulse)
            # apply the filter by element-wise multiplication
            spectrum[:] *= flt[:]
            # after the inverse fft, we should also multiply with the
            # update shape function. Otherwise, there is no guarantee that
            # the filtered pulse will be zero at t=0 and t=T (assuming that
            # is what the update shape is supposed to enforce). Also, it is
            # important that we overwrite `pulse` in-place (pulse[:] = ...)
            kwargs['optimized_pulses'][i][:] = np.fft.ifft(spectrum).real * shape
    
    # Limit pulse amplitude to 1 and smoothen
    for i in range(len(kwargs['optimized_pulses'])-2):
        #kwargs['optimized_pulses'][i] = savgol_filter(kwargs['optimized_pulses'][i], 9, 2)
        
        pulse_max = np.max(np.abs(kwargs['optimized_pulses'][i]))
        if pulse_max > amp_max:
            kwargs['optimized_pulses'][i] = (amp_max*np.array(kwargs['optimized_pulses'][i])/pulse_max)
        kwargs['optimized_pulses'][i] = np.fmax(np.fmin(kwargs['optimized_pulses'][i], kwargs['shape_arrays'][i]), -np.array(kwargs['shape_arrays'][i]))
        
        #conv = 3*σ
        #if (conv % 2 == 0): conv += 1
        #kwargs['optimized_pulses'][i] = savgol_filter(kwargs['optimized_pulses'][i], conv, 2)
    for i in range(len(kwargs['optimized_pulses'])):
        if kwargs['iteration'] % 10 == 0:
            plot_pulse(kwargs['optimized_pulses'][i], kwargs['tlist'][:-1], kwargs['tlist'][-1])
            #plot_spectrum(kwargs['optimized_pulses'][i], kwargs['tlist'][:-1], mark_freq=[0, -K_q, -K_q/2], mark_color=['r','g','b'], pos=0, xlim=[-(2*π), (2*π)])
    # Update λ
    #fac = 1
    #steps = 5
    #λₐ = kwargs['lambda_vals'][0]
    #for i in range(len(kwargs['lambda_vals'])):
    #    kwargs['lambda_vals'][i] = λₐ * fac
    #    lambda_a = λₐ * fac
    #print("λₐ = {}".format(kwargs['lambda_vals']))
In [479]:
# Reset results
opt_result = None
In [480]:
def convergence_reason(opt_result):
    if opt_result == None:
        return True
    reasons = ['monotonic', 'iterations']
    for r in reasons:
        if opt_result.message.find(r)>0:
            return r
    if opt_result.message.find('F_oc')>0 or opt_result.message.find('Δ')>0:
        return False
In [481]:
from datetime import datetime
def current_time():
    return datetime.now().isoformat()[:16].replace('T',' ')
In [482]:
def sine_pulse(t, T=σ*6, σ=σ):
    ω = K_q/2
    return np.sin(ω*t)*start_pulse(t, T=T, σ=σ)
In [483]:
def run_optim(T, lambda_a, ϕ):
    σ = T/6
    opt_result = None
    print('T = {}'.format(T))
    #steps = 500
    tlist = np.linspace(0, T, 16*int(np.ceil(T)))
    s_pulse = None
    H = hamiltonian(ampl0=1, use_rotating=True, start_pulse=s_pulse, T=T, phase=np.exp(-1j*ω_q*T))
    
    S_start = [start_pulse]*4
    S_funs = [S]*4
    for i, H_i in enumerate(H[1:]):
        if i < 4:
            H_i[1] = shape_field(H_i[1], S_start[i], T, σ)
            plot_pulse(H_i[1], tlist)
        else:
            plot_pulse(H_i[1], tlist, ylim=True)
    
    #objectives = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H) for ψ in state_rot(ϕ, T)]
    objectives = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H) for ψ in ϕ]
    
    # Check if guess pulse realises
    guess_dynamics = [ob.mesolve(tlist, options=qutip.Options(nsteps=50000)) for ob in objectives]
    final_state = guess_dynamics[0].states[-1]
    dm = final_state * ϕ[0][1].dag()
    fid = np.abs((final_state.dag() * ϕ[0][1]).full()[0][0])**2
    if fid > F_oc_tar:
        print('Guess pulse realises transfer already.')
        return True
    
    pulse_options = {H_i[1]: dict(lambda_a=lambda_a, shape=lambda t: S_funs[i](t, T=T, σ=σ)) for i, H_i in enumerate(H[1:5])}
    pulse_options.update({H_i[1]: dict(lambda_a=lambda_a, shape=lambda t: 0) for i, H_i in enumerate(H[5:])})
    
    #pulse_options = {
    #    H[2][1]: dict(lambda_a=lambda_a, shape=0),
    #    H[1][1]: dict(lambda_a=lambda_a, shape=lambda t: S_funs[0](t, T=T, σ=σ)),    
    #}
    while convergence_reason(opt_result):
        if convergence_reason(opt_result) == 'monotonic':
            break
            #lambda_a *= 2
        #    print('λₐ = {}'.format(lambda_a))
        #    pulse_options = {H_i[1]: dict(lambda_a=lambda_a, shape=lambda t: S_funs[i](t, T)) for i, H_i in enumerate(H[1:])}
        #iters = 5
        #if opt_result is not None:
        #    iters = opt_result.iters[-1] + iters

        opt_result = krotov.optimize_pulses(
            objectives,
            pulse_options=pulse_options,
            tlist=tlist,
            propagator=krotov.propagators.expm,
            chi_constructor=krotov.functionals.chis_ss,
            info_hook=krotov.info_hooks.chain(
                krotov.info_hooks.print_table(J_T=F_oc),
                print_fidelity
            ),
            check_convergence=krotov.convergence.Or(
                krotov.convergence.value_above(F_oc_tar, name='F_oc'),
                krotov.convergence.delta_below(F_err*1e-1),
                #krotov.convergence.check_monotonic_fidelity,
            ),
            modify_params_after_iter = modify_params,
            #iter_stop=1,
            continue_from = opt_result,
        )
        print(opt_result.message)
    opt_result.dump(os.path.join(os.getcwd(),'results','{}_pi_pulse_optim_{}.dat'.format(current_time(),T)))
In [484]:
step_size = pulse_max(0)*2.5
λ = 1/step_size
ϕ = [[ tensor(basis(L,1), basis(N,0)), tensor((basis(L,0)).unit(), cat_1) ]]

existing_times = [float(file.split('_')[4][:-4]) for file in os.listdir('results')]
t_times = np.flip(np.arange(1,21.5,1))
t_times = [42.]
for tot in t_times:
    if tot not in [float(file.split('_')[4][:-4]) for file in os.listdir('results')]:
        #plot_cardinal(state_rot(ϕ, tot)[0])
        if tot.is_integer():
            tot = int(tot)
        run_optim(tot, λ, ϕ)
    else:
        print('T = {} already exists'.format(tot))
T = 42
  iter.        J_T   ∑∫gₐ(t)dt          J       ΔJ_T         ΔJ  secs
      0   2.84e-03    0.00e+00   2.84e-03        n/a        n/a     3
          F_t = 0.99999 | F = 0.0028355067457238098 | F_t - F = 0.9971544932542762
      1   2.79e-03    7.13e-06   2.79e-03  -4.79e-05  -4.08e-05     8
          F_t = 0.99999 | F = 0.002787615525562697 | F_t - F = 0.9972023844744373
      2   2.83e-03    6.70e-06   2.84e-03   4.62e-05   5.29e-05     7 **
          F_t = 0.99999 | F = 0.002833851745673529 | F_t - F = 0.9971561482543265
      3   2.97e-03    6.53e-06   2.97e-03   1.33e-04   1.39e-04     8 **
          F_t = 0.99999 | F = 0.0029668178733085237 | F_t - F = 0.9970231821266915
      4   3.18e-03    6.58e-06   3.19e-03   2.16e-04   2.23e-04     8 **
          F_t = 0.99999 | F = 0.0031830455413428657 | F_t - F = 0.9968069544586572
      5   3.48e-03    6.85e-06   3.49e-03   3.00e-04   3.06e-04     8 **
          F_t = 0.99999 | F = 0.003482592719074851 | F_t - F = 0.9965074072809252
      6   3.87e-03    7.32e-06   3.88e-03   3.86e-04   3.94e-04     7 **
          F_t = 0.99999 | F = 0.0038688769303553976 | F_t - F = 0.9961211230696446
      7   4.35e-03    8.01e-06   4.36e-03   4.80e-04   4.88e-04     8 **
          F_t = 0.99999 | F = 0.004348739547460701 | F_t - F = 0.9956412604525393
      8   4.93e-03    8.94e-06   4.94e-03   5.84e-04   5.93e-04     7 **
          F_t = 0.99999 | F = 0.004932753241045395 | F_t - F = 0.9950572467589547
      9   5.64e-03    1.01e-05   5.65e-03   7.03e-04   7.13e-04     7 **
          F_t = 0.99999 | F = 0.0056358057360448 | F_t - F = 0.9943541942639552
     10   6.48e-03    1.16e-05   6.49e-03   8.42e-04   8.54e-04     6 **
          F_t = 0.99999 | F = 0.006478019499949956 | F_t - F = 0.9935119805000501
     11   7.49e-03    1.35e-05   7.50e-03   1.01e-03   1.02e-03     7 **
          F_t = 0.99999 | F = 0.007486101219795846 | F_t - F = 0.9925038987802042
     12   8.70e-03    1.59e-05   8.71e-03   1.21e-03   1.23e-03     8 **
          F_t = 0.99999 | F = 0.008695260205487073 | F_t - F = 0.991294739794513
     13   1.02e-02    1.89e-05   1.02e-02   1.46e-03   1.48e-03     8 **
          F_t = 0.99999 | F = 0.010151895123441593 | F_t - F = 0.9898381048765584
     14   1.19e-02    2.26e-05   1.19e-02   1.77e-03   1.79e-03     8 **
          F_t = 0.99999 | F = 0.011917327500119495 | F_t - F = 0.9880726724998805
     15   1.41e-02    2.74e-05   1.41e-02   2.16e-03   2.18e-03     7 **
          F_t = 0.99999 | F = 0.014072959663313771 | F_t - F = 0.9859170403366863
     16   1.67e-02    3.35e-05   1.68e-02   2.65e-03   2.69e-03     8 **
          F_t = 0.99999 | F = 0.016727347599952917 | F_t - F = 0.9832626524000472
     17   2.00e-02    4.14e-05   2.01e-02   3.30e-03   3.34e-03     8 **
          F_t = 0.99999 | F = 0.020025779147853858 | F_t - F = 0.9799642208521462
     18   2.42e-02    5.17e-05   2.42e-02   4.14e-03   4.19e-03     8 **
          F_t = 0.99999 | F = 0.024162964592329007 | F_t - F = 0.975827035407671
     19   2.94e-02    6.51e-05   2.95e-02   5.24e-03   5.30e-03     8 **
          F_t = 0.99999 | F = 0.02939922227414519 | F_t - F = 0.9705907777258549
     20   3.61e-02    8.27e-05   3.62e-02   6.68e-03   6.76e-03     7 **
          F_t = 0.99999 | F = 0.036079763375086435 | F_t - F = 0.9639102366249136
     21   4.47e-02    1.06e-04   4.48e-02   8.58e-03   8.68e-03     8 **
          F_t = 0.99999 | F = 0.044654798458240885 | F_t - F = 0.9553352015417591
     22   5.57e-02    1.36e-04   5.58e-02   1.10e-02   1.12e-02     7 **
          F_t = 0.99999 | F = 0.055694377577913685 | F_t - F = 0.9442956224220863
     23   6.99e-02    1.75e-04   7.01e-02   1.42e-02   1.44e-02     8 **
          F_t = 0.99999 | F = 0.06988518854825691 | F_t - F = 0.9301048114517432
     24   8.80e-02    2.24e-04   8.82e-02   1.81e-02   1.83e-02     8 **
          F_t = 0.99999 | F = 0.0879866369379881 | F_t - F = 0.9120033630620119
     25   1.11e-01    2.83e-04   1.11e-01   2.27e-02   2.30e-02     8 **
          F_t = 0.99999 | F = 0.11071298884784772 | F_t - F = 0.8892770111521523
     26   1.39e-01    3.49e-04   1.39e-01   2.78e-02   2.81e-02     8 **
          F_t = 0.99999 | F = 0.1385082965238379 | F_t - F = 0.8614817034761622
     27   1.71e-01    4.15e-04   1.72e-01   3.27e-02   3.31e-02     8 **
          F_t = 0.99999 | F = 0.17121772808083088 | F_t - F = 0.8287722719191691
     28   2.08e-01    4.68e-04   2.08e-01   3.65e-02   3.70e-02     8 **
          F_t = 0.99999 | F = 0.20776058580044596 | F_t - F = 0.7922294141995541
     29   2.46e-01    4.95e-04   2.47e-01   3.83e-02   3.88e-02     8 **
          F_t = 0.99999 | F = 0.24603995377006477 | F_t - F = 0.7539500462299353
     30   2.83e-01    4.85e-04   2.84e-01   3.73e-02   3.78e-02     8 **
          F_t = 0.99999 | F = 0.2833290382486113 | F_t - F = 0.7166609617513888
     31   3.17e-01    4.42e-04   3.18e-01   3.38e-02   3.42e-02     8 **
          F_t = 0.99999 | F = 0.31710642579426257 | F_t - F = 0.6828835742057375
     32   3.46e-01    3.78e-04   3.46e-01   2.88e-02   2.92e-02     8 **
          F_t = 0.99999 | F = 0.3458845483924799 | F_t - F = 0.6541054516075202
     33   3.69e-01    3.11e-04   3.70e-01   2.36e-02   2.39e-02     8 **
          F_t = 0.99999 | F = 0.3694701725610803 | F_t - F = 0.6305198274389198
     34   3.89e-01    2.52e-04   3.89e-01   1.91e-02   1.94e-02     9 **
          F_t = 0.99999 | F = 0.3885841355510215 | F_t - F = 0.6114058644489786
     35   4.04e-01    2.07e-04   4.04e-01   1.57e-02   1.59e-02     9 **
          F_t = 0.99999 | F = 0.4042680132032443 | F_t - F = 0.5957219867967558
     36   4.17e-01    1.75e-04   4.18e-01   1.32e-02   1.34e-02     9 **
          F_t = 0.99999 | F = 0.41746934936207547 | F_t - F = 0.5825206506379246
     37   4.29e-01    1.51e-04   4.29e-01   1.14e-02   1.16e-02     9 **
          F_t = 0.99999 | F = 0.4288874193002875 | F_t - F = 0.5711025806997125
     38   4.39e-01    1.34e-04   4.39e-01   1.01e-02   1.02e-02     8 **
          F_t = 0.99999 | F = 0.43898120131657253 | F_t - F = 0.5610087986834276
     39   4.48e-01    1.20e-04   4.48e-01   9.05e-03   9.17e-03     8 **
          F_t = 0.99999 | F = 0.4480340322257299 | F_t - F = 0.5519559677742701
     40   4.56e-01    1.08e-04   4.56e-01   8.18e-03   8.29e-03     7 **
          F_t = 0.99999 | F = 0.45621880719703534 | F_t - F = 0.5437711928029647
     41   4.64e-01    9.82e-05   4.64e-01   7.43e-03   7.53e-03     7 **
          F_t = 0.99999 | F = 0.463645838439069 | F_t - F = 0.536344161560931
     42   4.70e-01    8.91e-05   4.70e-01   6.75e-03   6.84e-03     7 **
          F_t = 0.99999 | F = 0.47039286374053246 | F_t - F = 0.5295971362594676
     43   4.77e-01    8.08e-05   4.77e-01   6.13e-03   6.21e-03     8 **
          F_t = 0.99999 | F = 0.4765218433510558 | F_t - F = 0.5234681566489443
     44   4.82e-01    7.33e-05   4.82e-01   5.57e-03   5.64e-03     8 **
          F_t = 0.99999 | F = 0.4820873665291291 | F_t - F = 0.517902633470871
     45   4.87e-01    6.64e-05   4.87e-01   5.05e-03   5.12e-03     8 **
          F_t = 0.99999 | F = 0.48714029557640753 | F_t - F = 0.5128497044235925
     46   4.92e-01    6.02e-05   4.92e-01   4.59e-03   4.65e-03     9 **
          F_t = 0.99999 | F = 0.4917289795733418 | F_t - F = 0.5082610204266582
     47   4.96e-01    5.47e-05   4.96e-01   4.17e-03   4.23e-03     9 **
          F_t = 0.99999 | F = 0.4958993832142383 | F_t - F = 0.5040906167857617
     48   5.00e-01    4.97e-05   5.00e-01   3.80e-03   3.85e-03     9 **
          F_t = 0.99999 | F = 0.49969483084138416 | F_t - F = 0.5002951691586159
     49   5.03e-01    4.52e-05   5.03e-01   3.46e-03   3.51e-03     9 **
          F_t = 0.99999 | F = 0.5031556939700879 | F_t - F = 0.4968343060299122
     50   5.06e-01    4.13e-05   5.06e-01   3.16e-03   3.20e-03     8 **
          F_t = 0.99999 | F = 0.5063191575583976 | F_t - F = 0.4936708424416024
     51   5.09e-01    3.78e-05   5.09e-01   2.90e-03   2.94e-03     9 **
          F_t = 0.99999 | F = 0.5092191045716067 | F_t - F = 0.49077089542839336
     52   5.12e-01    3.47e-05   5.12e-01   2.67e-03   2.70e-03     8 **
          F_t = 0.99999 | F = 0.5118861185353553 | F_t - F = 0.4881038814646448
     53   5.14e-01    3.20e-05   5.14e-01   2.46e-03   2.49e-03     8 **
          F_t = 0.99999 | F = 0.5143475832088901 | F_t - F = 0.48564241679111
     54   5.17e-01    2.96e-05   5.17e-01   2.28e-03   2.31e-03     8 **
          F_t = 0.99999 | F = 0.5166266260806526 | F_t - F = 0.48336337391934747
     55   5.19e-01    2.82e-05   5.19e-01   1.87e-03   1.90e-03     9 **
          F_t = 0.99999 | F = 0.5185006164286535 | F_t - F = 0.4814893835713465
     56   5.20e-01    2.71e-05   5.20e-01   1.78e-03   1.80e-03     9 **
          F_t = 0.99999 | F = 0.5202779837482282 | F_t - F = 0.47971201625177184
     57   5.22e-01    2.61e-05   5.22e-01   1.70e-03   1.73e-03     9 **
          F_t = 0.99999 | F = 0.5219810730552309 | F_t - F = 0.47800892694476915
     58   5.24e-01    2.51e-05   5.24e-01   1.64e-03   1.66e-03     8 **
          F_t = 0.99999 | F = 0.5236193068409876 | F_t - F = 0.4763706931590125
     59   5.25e-01    2.41e-05   5.25e-01   1.58e-03   1.60e-03    10 **
          F_t = 0.99999 | F = 0.5251961060926535 | F_t - F = 0.4747938939073465
     60   5.27e-01    2.31e-05   5.27e-01   1.52e-03   1.54e-03     9 **
          F_t = 0.99999 | F = 0.5267175238227869 | F_t - F = 0.47327247617721313
     61   5.28e-01    2.22e-05   5.28e-01   1.47e-03   1.49e-03     8 **
          F_t = 0.99999 | F = 0.5281862876473746 | F_t - F = 0.4718037123526254
     62   5.30e-01    2.13e-05   5.30e-01   1.42e-03   1.44e-03     8 **
          F_t = 0.99999 | F = 0.5296036717528915 | F_t - F = 0.4703863282471086
     63   5.31e-01    2.05e-05   5.31e-01   1.37e-03   1.39e-03     9 **
          F_t = 0.99999 | F = 0.5309733277135598 | F_t - F = 0.4690166722864403
     64   5.32e-01    1.98e-05   5.32e-01   1.33e-03   1.35e-03     8 **
          F_t = 0.99999 | F = 0.5323050522936823 | F_t - F = 0.46768494770631774
     65   5.34e-01    1.92e-05   5.34e-01   1.30e-03   1.32e-03     8 **
          F_t = 0.99999 | F = 0.5336010673221293 | F_t - F = 0.46638893267787074
     66   5.35e-01    1.86e-05   5.35e-01   1.26e-03   1.28e-03     8 **
          F_t = 0.99999 | F = 0.5348658529895992 | F_t - F = 0.46512414701040083
     67   5.36e-01    1.80e-05   5.36e-01   1.24e-03   1.25e-03     7 **
          F_t = 0.99999 | F = 0.536101069977912 | F_t - F = 0.4638889300220881
     68   5.37e-01    1.76e-05   5.37e-01   1.20e-03   1.22e-03     8 **
          F_t = 0.99999 | F = 0.5372995214377214 | F_t - F = 0.46269047856227863
     69   5.38e-01    1.74e-05   5.38e-01   1.14e-03   1.16e-03     8 **
          F_t = 0.99999 | F = 0.5384427519201176 | F_t - F = 0.46154724807988246
     70   5.40e-01    1.72e-05   5.40e-01   1.13e-03   1.14e-03     8 **
          F_t = 0.99999 | F = 0.539568449039624 | F_t - F = 0.46042155096037607
     71   5.41e-01    1.69e-05   5.41e-01   1.11e-03   1.13e-03     8 **
          F_t = 0.99999 | F = 0.5406801882558445 | F_t - F = 0.4593098117441555
     72   5.42e-01    1.67e-05   5.42e-01   1.10e-03   1.12e-03    10 **
          F_t = 0.99999 | F = 0.5417786992875422 | F_t - F = 0.45821130071245786
     73   5.43e-01    1.65e-05   5.43e-01   1.09e-03   1.10e-03     7 **
          F_t = 0.99999 | F = 0.5428658256216518 | F_t - F = 0.4571241743783483
     74   5.44e-01    1.62e-05   5.44e-01   1.08e-03   1.09e-03     7 **
          F_t = 0.99999 | F = 0.5439421020836744 | F_t - F = 0.4560478979163256
     75   5.45e-01    1.60e-05   5.45e-01   1.07e-03   1.08e-03     7 **
          F_t = 0.99999 | F = 0.5450091142475997 | F_t - F = 0.45498088575240037
     76   5.46e-01    1.58e-05   5.46e-01   1.06e-03   1.07e-03     6 **
          F_t = 0.99999 | F = 0.5460672047929109 | F_t - F = 0.4539227952070891
     77   5.47e-01    1.57e-05   5.47e-01   1.05e-03   1.07e-03     7 **
          F_t = 0.99999 | F = 0.5471176948284976 | F_t - F = 0.45287230517150245
     78   5.48e-01    1.55e-05   5.48e-01   1.04e-03   1.06e-03     7 **
          F_t = 0.99999 | F = 0.5481607467756436 | F_t - F = 0.4518292532243564
     79   5.49e-01    1.53e-05   5.49e-01   1.04e-03   1.05e-03     7 **
          F_t = 0.99999 | F = 0.5491974577148413 | F_t - F = 0.45079254228515875
     80   5.50e-01    1.52e-05   5.50e-01   1.03e-03   1.05e-03     7 **
          F_t = 0.99999 | F = 0.5502278500309076 | F_t - F = 0.4497621499690925
     81   5.51e-01    1.50e-05   5.51e-01   1.02e-03   1.04e-03     7 **
          F_t = 0.99999 | F = 0.5512528487094595 | F_t - F = 0.4487371512905406
     82   5.52e-01    1.50e-05   5.52e-01   9.43e-04   9.58e-04     8 **
          F_t = 0.99999 | F = 0.5521957722006239 | F_t - F = 0.44779422779937617
     83   5.53e-01    1.56e-05   5.53e-01   5.86e-04   6.01e-04     7 **
          F_t = 0.99999 | F = 0.5527815006157297 | F_t - F = 0.4472084993842703
     84   5.53e-01    1.62e-05   5.53e-01   5.76e-04   5.93e-04     7 **
          F_t = 0.99999 | F = 0.5533578021112983 | F_t - F = 0.4466321978887018
     85   5.54e-01    1.68e-05   5.54e-01   5.71e-04   5.88e-04     7 **
          F_t = 0.99999 | F = 0.5539287837479848 | F_t - F = 0.4460612162520152
     86   5.55e-01    1.74e-05   5.55e-01   5.74e-04   5.92e-04     7 **
          F_t = 0.99999 | F = 0.554503029997691 | F_t - F = 0.4454869700023091
     87   5.55e-01    1.80e-05   5.55e-01   5.77e-04   5.95e-04     7 **
          F_t = 0.99999 | F = 0.5550803624643217 | F_t - F = 0.44490963753567836
     88   5.56e-01    1.85e-05   5.56e-01   5.87e-04   6.05e-04     8 **
          F_t = 0.99999 | F = 0.5556669014262738 | F_t - F = 0.4443230985737262
     89   5.56e-01    1.91e-05   5.56e-01   5.94e-04   6.13e-04     8 **
          F_t = 0.99999 | F = 0.5562610887868444 | F_t - F = 0.4437289112131556
     90   5.57e-01    1.96e-05   5.57e-01   6.07e-04   6.26e-04     7 **
          F_t = 0.99999 | F = 0.5568677958071955 | F_t - F = 0.44312220419280457
     91   5.57e-01    2.01e-05   5.58e-01   6.15e-04   6.35e-04     7 **
          F_t = 0.99999 | F = 0.5574830811793311 | F_t - F = 0.44250691882066895
     92   5.58e-01    2.07e-05   5.58e-01   5.79e-04   6.00e-04     7 **
          F_t = 0.99999 | F = 0.5580619312216966 | F_t - F = 0.4419280687783035
     93   5.59e-01    2.12e-05   5.59e-01   5.88e-04   6.09e-04     8 **
          F_t = 0.99999 | F = 0.558649922661063 | F_t - F = 0.4413400773389371
     94   5.59e-01    2.18e-05   5.59e-01   6.01e-04   6.23e-04     7 **
          F_t = 0.99999 | F = 0.5592508175898206 | F_t - F = 0.4407391824101794
     95   5.60e-01    2.23e-05   5.60e-01   6.12e-04   6.34e-04     7 **
          F_t = 0.99999 | F = 0.5598628083485194 | F_t - F = 0.4401271916514806
     96   5.60e-01    2.28e-05   5.61e-01   6.26e-04   6.49e-04     7 **
          F_t = 0.99999 | F = 0.5604889308946973 | F_t - F = 0.43950106910530273
     97   5.61e-01    2.33e-05   5.61e-01   6.38e-04   6.61e-04     7 **
          F_t = 0.99999 | F = 0.5611270629946604 | F_t - F = 0.4388629370053396
     98   5.62e-01    2.38e-05   5.62e-01   6.53e-04   6.77e-04     7 **
          F_t = 0.99999 | F = 0.5617799071506727 | F_t - F = 0.4382100928493273
     99   5.62e-01    2.42e-05   5.62e-01   6.65e-04   6.90e-04     7 **
          F_t = 0.99999 | F = 0.5624451783521676 | F_t - F = 0.4375448216478325
    100   5.63e-01    2.47e-05   5.63e-01   6.80e-04   7.05e-04     8 **
          F_t = 0.99999 | F = 0.5631253740836974 | F_t - F = 0.4368646259163026
    101   5.64e-01    2.51e-05   5.64e-01   6.93e-04   7.18e-04     9 **
          F_t = 0.99999 | F = 0.5638181219181914 | F_t - F = 0.4361718780818087
    102   5.65e-01    2.55e-05   5.65e-01   7.08e-04   7.33e-04     9 **
          F_t = 0.99999 | F = 0.5645257923358409 | F_t - F = 0.43546420766415916
    103   5.65e-01    2.59e-05   5.65e-01   7.20e-04   7.46e-04     9 **
          F_t = 0.99999 | F = 0.5652459676018549 | F_t - F = 0.4347440323981452
    104   5.66e-01    2.63e-05   5.66e-01   7.35e-04   7.61e-04     9 **
          F_t = 0.99999 | F = 0.5659809435626716 | F_t - F = 0.43400905643732846
    105   5.67e-01    2.66e-05   5.67e-01   7.47e-04   7.74e-04    10 **
          F_t = 0.99999 | F = 0.5667282819314581 | F_t - F = 0.43326171806854197
    106   5.67e-01    2.70e-05   5.68e-01   7.62e-04   7.89e-04     8 **
          F_t = 0.99999 | F = 0.5674902419097109 | F_t - F = 0.4324997580902892
    107   5.68e-01    2.73e-05   5.68e-01   7.73e-04   8.01e-04     9 **
          F_t = 0.99999 | F = 0.5682637405548141 | F_t - F = 0.43172625944518594
    108   5.69e-01    2.76e-05   5.69e-01   7.88e-04   8.15e-04     8 **
          F_t = 0.99999 | F = 0.5690512491160921 | F_t - F = 0.430938750883908
    109   5.70e-01    2.81e-05   5.70e-01   7.26e-04   7.55e-04     7 **
          F_t = 0.99999 | F = 0.5697776782372825 | F_t - F = 0.4302123217627175
    110   5.70e-01    2.95e-05   5.70e-01   4.75e-04   5.04e-04     7 **
          F_t = 0.99999 | F = 0.5702523000819154 | F_t - F = 0.42973769991808464
    111   5.71e-01    3.06e-05   5.71e-01   4.08e-04   4.39e-04     7 **
          F_t = 0.99999 | F = 0.5706603414935557 | F_t - F = 0.42932965850644433
    112   5.71e-01    3.18e-05   5.71e-01   3.99e-04   4.30e-04     7 **
          F_t = 0.99999 | F = 0.5710590196990064 | F_t - F = 0.42893098030099364
    113   5.71e-01    3.27e-05   5.71e-01   3.57e-04   3.90e-04     7 **
          F_t = 0.99999 | F = 0.5714163630319551 | F_t - F = 0.42857363696804496
    114   5.72e-01    3.36e-05   5.72e-01   3.66e-04   4.00e-04     8 **
          F_t = 0.99999 | F = 0.5717824455789524 | F_t - F = 0.42820755442104763
    115   5.72e-01    3.43e-05   5.72e-01   3.38e-04   3.73e-04     7 **
          F_t = 0.99999 | F = 0.5721207157034311 | F_t - F = 0.4278692842965689
    116   5.72e-01    3.51e-05   5.73e-01   3.56e-04   3.92e-04     9 **
          F_t = 0.99999 | F = 0.5724771519907388 | F_t - F = 0.42751284800926126
    117   5.73e-01    3.56e-05   5.73e-01   3.35e-04   3.71e-04     8 **
          F_t = 0.99999 | F = 0.5728122912486537 | F_t - F = 0.4271777087513463
    118   5.73e-01    3.61e-05   5.73e-01   3.58e-04   3.94e-04     7 **
          F_t = 0.99999 | F = 0.5731700415127049 | F_t - F = 0.42681995848729515
    119   5.74e-01    3.64e-05   5.74e-01   3.39e-04   3.76e-04     8 **
          F_t = 0.99999 | F = 0.5735092741502464 | F_t - F = 0.4264807258497536
    120   5.74e-01    3.69e-05   5.74e-01   3.64e-04   4.01e-04     8 **
          F_t = 0.99999 | F = 0.5738730419067993 | F_t - F = 0.4261169580932007
    121   5.74e-01    3.71e-05   5.74e-01   3.46e-04   3.83e-04     9 **
          F_t = 0.99999 | F = 0.5742192259386016 | F_t - F = 0.4257707740613984
    122   5.75e-01    3.74e-05   5.75e-01   3.71e-04   4.08e-04     9 **
          F_t = 0.99999 | F = 0.5745898030762723 | F_t - F = 0.42540019692372777
    123   5.75e-01    3.76e-05   5.75e-01   3.40e-04   3.78e-04     8 **
          F_t = 0.99999 | F = 0.5749302411401769 | F_t - F = 0.42505975885982317
    124   5.75e-01    3.79e-05   5.75e-01   3.65e-04   4.03e-04     8 **
          F_t = 0.99999 | F = 0.5752949144784087 | F_t - F = 0.4246950855215913
    125   5.76e-01    3.80e-05   5.76e-01   3.47e-04   3.85e-04     7 **
          F_t = 0.99999 | F = 0.5756422564006319 | F_t - F = 0.4243477435993681
    126   5.76e-01    3.82e-05   5.76e-01   3.72e-04   4.10e-04     7 **
          F_t = 0.99999 | F = 0.5760138744013207 | F_t - F = 0.42397612559867937
    127   5.76e-01    3.82e-05   5.76e-01   3.54e-04   3.92e-04     8 **
          F_t = 0.99999 | F = 0.5763677885914193 | F_t - F = 0.4236222114085807
    128   5.77e-01    3.84e-05   5.77e-01   3.78e-04   4.17e-04     7 **
          F_t = 0.99999 | F = 0.5767459324801032 | F_t - F = 0.42324406751989685
    129   5.77e-01    3.84e-05   5.77e-01   3.60e-04   3.98e-04     7 **
          F_t = 0.99999 | F = 0.5771058540380325 | F_t - F = 0.42288414596196755
    130   5.77e-01    3.85e-05   5.78e-01   3.84e-04   4.23e-04     8 **
          F_t = 0.99999 | F = 0.5774898933968542 | F_t - F = 0.42250010660314585
    131   5.78e-01    3.85e-05   5.78e-01   3.65e-04   4.04e-04     8 **
          F_t = 0.99999 | F = 0.5778551111603869 | F_t - F = 0.42213488883961314
    132   5.78e-01    3.86e-05   5.78e-01   3.89e-04   4.28e-04     7 **
          F_t = 0.99999 | F = 0.5782443263585417 | F_t - F = 0.4217456736414583
    133   5.79e-01    3.85e-05   5.79e-01   3.70e-04   4.08e-04     7 **
          F_t = 0.99999 | F = 0.5786140880785111 | F_t - F = 0.42137591192148893
    134   5.79e-01    3.86e-05   5.79e-01   3.94e-04   4.32e-04     8 **
          F_t = 0.99999 | F = 0.5790077544407263 | F_t - F = 0.42098224555927377
    135   5.79e-01    3.85e-05   5.79e-01   3.74e-04   4.12e-04     8 **
          F_t = 0.99999 | F = 0.5793813284817737 | F_t - F = 0.42060867151822634
    136   5.80e-01    3.86e-05   5.80e-01   3.97e-04   4.36e-04     7 **
          F_t = 0.99999 | F = 0.5797787608082503 | F_t - F = 0.42021123919174974
    137   5.80e-01    3.85e-05   5.80e-01   3.77e-04   4.15e-04     7 **
          F_t = 0.99999 | F = 0.5801554666796364 | F_t - F = 0.4198345333203637
    138   5.81e-01    3.86e-05   5.81e-01   4.01e-04   4.39e-04     7 **
          F_t = 0.99999 | F = 0.5805560397063344 | F_t - F = 0.41943396029366564
    139   5.81e-01    3.85e-05   5.81e-01   3.79e-04   4.18e-04     7 **
          F_t = 0.99999 | F = 0.5809352609461629 | F_t - F = 0.41905473905383717
    140   5.81e-01    3.85e-05   5.81e-01   4.03e-04   4.42e-04     7 **
          F_t = 0.99999 | F = 0.5813384168298731 | F_t - F = 0.41865158317012696
    141   5.82e-01    3.85e-05   5.82e-01   3.70e-04   4.09e-04     9 **
          F_t = 0.99999 | F = 0.5817086318336465 | F_t - F = 0.41828136816635353
    142   5.82e-01    3.92e-05   5.82e-01   3.34e-04   3.73e-04     7 **
          F_t = 0.99999 | F = 0.5820423581444331 | F_t - F = 0.417947641855567
    143   5.82e-01    3.95e-05   5.82e-01   3.03e-04   3.42e-04     8 **
          F_t = 0.99999 | F = 0.5823450842614086 | F_t - F = 0.4176449157385914
    144   5.83e-01    4.02e-05   5.83e-01   2.28e-04   2.68e-04     7 **
          F_t = 0.99999 | F = 0.5825732299974501 | F_t - F = 0.41741677000254995
    145   5.83e-01    4.07e-05   5.83e-01   1.73e-04   2.13e-04     8 **
          F_t = 0.99999 | F = 0.5827459310202291 | F_t - F = 0.41724406897977095
    146   5.83e-01    4.14e-05   5.83e-01   2.00e-04   2.42e-04     7 **
          F_t = 0.99999 | F = 0.5829461945258959 | F_t - F = 0.41704380547410413
    147   5.83e-01    4.18e-05   5.83e-01   1.74e-04   2.16e-04     7 **
          F_t = 0.99999 | F = 0.5831202831207453 | F_t - F = 0.4168697168792548
    148   5.83e-01    4.24e-05   5.83e-01   2.05e-04   2.47e-04     8 **
          F_t = 0.99999 | F = 0.5833250384414265 | F_t - F = 0.4166649615585736
    149   5.84e-01    4.27e-05   5.84e-01   1.80e-04   2.23e-04     7 **
          F_t = 0.99999 | F = 0.5835050703604416 | F_t - F = 0.4164849296395584
    150   5.84e-01    4.33e-05   5.84e-01   2.12e-04   2.56e-04     7 **
          F_t = 0.99999 | F = 0.5837173594801367 | F_t - F = 0.41627264051986335
    151   5.84e-01    4.35e-05   5.84e-01   1.88e-04   2.32e-04     7 **
          F_t = 0.99999 | F = 0.5839053695889499 | F_t - F = 0.41608463041105015
    152   5.84e-01    4.40e-05   5.84e-01   2.21e-04   2.65e-04     7 **
          F_t = 0.99999 | F = 0.5841265544889912 | F_t - F = 0.41586344551100884
    153   5.84e-01    4.43e-05   5.84e-01   1.97e-04   2.41e-04     7 **
          F_t = 0.99999 | F = 0.5843234132837944 | F_t - F = 0.4156665867162056
    154   5.85e-01    4.47e-05   5.85e-01   2.31e-04   2.75e-04     7 **
          F_t = 0.99999 | F = 0.5845540820810453 | F_t - F = 0.41543591791895473
    155   5.85e-01    4.49e-05   5.85e-01   2.06e-04   2.51e-04     8 **
          F_t = 0.99999 | F = 0.5847601343722445 | F_t - F = 0.41522986562775555
    156   5.85e-01    4.53e-05   5.85e-01   2.40e-04   2.86e-04     7 **
          F_t = 0.99999 | F = 0.5850004915767625 | F_t - F = 0.41498950842323756
    157   5.85e-01    4.55e-05   5.85e-01   2.15e-04   2.61e-04     7 **
          F_t = 0.99999 | F = 0.585215803050641 | F_t - F = 0.414774196949359
    158   5.85e-01    4.58e-05   5.86e-01   2.50e-04   2.96e-04     7 **
          F_t = 0.99999 | F = 0.5854658636680449 | F_t - F = 0.4145241363319552
    159   5.86e-01    4.60e-05   5.86e-01   2.25e-04   2.71e-04     7 **
          F_t = 0.99999 | F = 0.5856904300375857 | F_t - F = 0.41429956996241435
    160   5.86e-01    4.63e-05   5.86e-01   2.60e-04   3.06e-04     7 **
          F_t = 0.99999 | F = 0.5859502082804525 | F_t - F = 0.4140397917195475
    161   5.86e-01    4.64e-05   5.86e-01   2.34e-04   2.80e-04     9 **
          F_t = 0.99999 | F = 0.5861840000519578 | F_t - F = 0.41380599994804224
    162   5.86e-01    4.68e-05   5.87e-01   2.69e-04   3.16e-04     8 **
          F_t = 0.99999 | F = 0.5864534653683968 | F_t - F = 0.4135365346316032
    163   5.87e-01    4.68e-05   5.87e-01   2.43e-04   2.90e-04     9 **
          F_t = 0.99999 | F = 0.5866963645562361 | F_t - F = 0.41329363544376396
    164   5.87e-01    4.72e-05   5.87e-01   2.55e-04   3.02e-04     8 **
          F_t = 0.99999 | F = 0.586951620793228 | F_t - F = 0.413038379206772
    165   5.87e-01    4.73e-05   5.87e-01   2.29e-04   2.76e-04     8 **
          F_t = 0.99999 | F = 0.5871804280660446 | F_t - F = 0.4128095719339554
    166   5.87e-01    4.77e-05   5.87e-01   2.65e-04   3.12e-04     9 **
          F_t = 0.99999 | F = 0.5874450390300956 | F_t - F = 0.41254496096990445
    167   5.88e-01    4.77e-05   5.88e-01   2.38e-04   2.86e-04     9 **
          F_t = 0.99999 | F = 0.5876831064378077 | F_t - F = 0.4123068935621923
    168   5.88e-01    4.81e-05   5.88e-01   2.75e-04   3.23e-04     8 **
          F_t = 0.99999 | F = 0.5879577328909272 | F_t - F = 0.4120322671090728
    169   5.88e-01    4.81e-05   5.88e-01   2.48e-04   2.96e-04     8 **
          F_t = 0.99999 | F = 0.5882054960658026 | F_t - F = 0.4117845039341974
    170   5.88e-01    4.85e-05   5.89e-01   2.64e-04   3.12e-04     8 **
          F_t = 0.99999 | F = 0.5884690471491573 | F_t - F = 0.4115209528508428
    171   5.89e-01    4.88e-05   5.89e-01   8.86e-05   1.37e-04    10 **
          F_t = 0.99999 | F = 0.5885576528091591 | F_t - F = 0.411432347190841
    172   5.89e-01    4.97e-05   5.89e-01   1.37e-04   1.87e-04    11 **
          F_t = 0.99999 | F = 0.5886949748467346 | F_t - F = 0.41129502515326544
    173   5.89e-01    4.95e-05   5.89e-01   6.59e-05   1.15e-04    12 **
          F_t = 0.99999 | F = 0.5887608872700334 | F_t - F = 0.41122911272996665
    174   5.89e-01    5.04e-05   5.89e-01   1.36e-04   1.87e-04    10 **
          F_t = 0.99999 | F = 0.5888971350060772 | F_t - F = 0.41109286499392284
    175   5.89e-01    5.01e-05   5.89e-01   6.50e-05   1.15e-04     8 **
          F_t = 0.99999 | F = 0.5889620942431175 | F_t - F = 0.41102790575688253
    176   5.89e-01    5.10e-05   5.89e-01   1.40e-04   1.91e-04     9 **
          F_t = 0.99999 | F = 0.5891020203378959 | F_t - F = 0.4108879796621041
    177   5.89e-01    5.06e-05   5.89e-01   6.63e-05   1.17e-04     8 **
          F_t = 0.99999 | F = 0.5891683390100806 | F_t - F = 0.41082166098991946
    178   5.89e-01    5.15e-05   5.89e-01   1.45e-04   1.97e-04     8 **
          F_t = 0.99999 | F = 0.589313641732688 | F_t - F = 0.4106763582673121
    179   5.89e-01    5.11e-05   5.89e-01   6.84e-05   1.19e-04     9 **
          F_t = 0.99999 | F = 0.5893820399177417 | F_t - F = 0.4106079600822583
    180   5.90e-01    5.19e-05   5.90e-01   1.52e-04   2.04e-04    10 **
          F_t = 0.99999 | F = 0.5895338308960475 | F_t - F = 0.41045616910395255
    181   5.90e-01    5.14e-05   5.90e-01   7.13e-05   1.23e-04    12 **
          F_t = 0.99999 | F = 0.5896051178690345 | F_t - F = 0.4103848821309656
    182   5.90e-01    5.23e-05   5.90e-01   1.59e-04   2.11e-04    10 **
          F_t = 0.99999 | F = 0.5897641123817778 | F_t - F = 0.4102258876182222
    183   5.90e-01    5.17e-05   5.90e-01   7.42e-05   1.26e-04     8 **
          F_t = 0.99999 | F = 0.5898382937829356 | F_t - F = 0.4101517062170644
    184   5.90e-01    5.25e-05   5.90e-01   1.66e-04   2.19e-04    10 **
          F_t = 0.99999 | F = 0.5900047358659631 | F_t - F = 0.4099852641340369
    185   5.90e-01    5.18e-05   5.90e-01   7.71e-05   1.29e-04     9 **
          F_t = 0.99999 | F = 0.5900818551839428 | F_t - F = 0.4099081448160572
    186   5.90e-01    5.27e-05   5.90e-01   1.74e-04   2.27e-04     9 **
          F_t = 0.99999 | F = 0.5902562008575575 | F_t - F = 0.40973379914244257
    187   5.90e-01    5.26e-05   5.90e-01  -3.43e-05   1.83e-05     8 *
          F_t = 0.99999 | F = 0.5902218537575045 | F_t - F = 0.4097681462424956
    188   5.90e-01    5.44e-05   5.90e-01   6.16e-05   1.16e-04     7 **
          F_t = 0.99999 | F = 0.590283405072998 | F_t - F = 0.409706594927002
    189   5.90e-01    5.33e-05   5.90e-01  -7.10e-05  -1.77e-05     8
          F_t = 0.99999 | F = 0.5902123675143001 | F_t - F = 0.4097776324857
    190   5.90e-01    5.50e-05   5.90e-01   6.41e-05   1.19e-04     9 **
          F_t = 0.99999 | F = 0.5902764531380671 | F_t - F = 0.40971354686193295
    191   5.90e-01    5.36e-05   5.90e-01  -6.64e-05  -1.28e-05     8
          F_t = 0.99999 | F = 0.5902100155593241 | F_t - F = 0.409779984440676
    192   5.90e-01    5.53e-05   5.90e-01   8.01e-05   1.35e-04     9 **
          F_t = 0.99999 | F = 0.5902901528783163 | F_t - F = 0.4096998471216837
    193   5.90e-01    5.38e-05   5.90e-01  -5.80e-05  -4.18e-06     8
          F_t = 0.99999 | F = 0.5902321551743607 | F_t - F = 0.4097578448256394
    194   5.90e-01    5.55e-05   5.90e-01   9.73e-05   1.53e-04     8 **
          F_t = 0.99999 | F = 0.5903294566543282 | F_t - F = 0.4096605433456718
    195   5.90e-01    5.39e-05   5.90e-01  -5.08e-05   3.04e-06     9 *
          F_t = 0.99999 | F = 0.5902786110271211 | F_t - F = 0.40971138897287895
    196   5.90e-01    5.57e-05   5.90e-01   1.13e-04   1.69e-04    11 **
          F_t = 0.99999 | F = 0.590392077001293 | F_t - F = 0.409597922998707
    197   5.90e-01    5.39e-05   5.90e-01  -4.58e-05   8.03e-06     9 *
          F_t = 0.99999 | F = 0.5903462271209168 | F_t - F = 0.40964377287908327
    198   5.90e-01    5.59e-05   5.91e-01   1.23e-04   1.79e-04     9 **
          F_t = 0.99999 | F = 0.5904691232989845 | F_t - F = 0.40952087670101556
    199   5.90e-01    5.40e-05   5.90e-01  -6.08e-05  -6.77e-06     8
          F_t = 0.99999 | F = 0.5904083486468501 | F_t - F = 0.40958165135314994
    200   5.91e-01    5.61e-05   5.91e-01   1.24e-04   1.80e-04     9 **
          F_t = 0.99999 | F = 0.5905322483506277 | F_t - F = 0.40945775164937237
    201   5.90e-01    5.40e-05   5.91e-01  -5.91e-05  -5.09e-06     8
          F_t = 0.99999 | F = 0.5904731267856259 | F_t - F = 0.40951687321437413
    202   5.91e-01    5.63e-05   5.91e-01   1.38e-04   1.94e-04     7 **
          F_t = 0.99999 | F = 0.5906111339301127 | F_t - F = 0.4093788660698874
    203   5.91e-01    5.40e-05   5.91e-01  -5.91e-05  -5.08e-06     8
          F_t = 0.99999 | F = 0.5905520819853384 | F_t - F = 0.4094379180146617
    204   5.91e-01    5.64e-05   5.91e-01   1.51e-04   2.08e-04     9 **
          F_t = 0.99999 | F = 0.5907033483593384 | F_t - F = 0.4092866516406617
    205   5.91e-01    5.39e-05   5.91e-01  -6.08e-05  -6.98e-06     8
          F_t = 0.99999 | F = 0.5906425039347817 | F_t - F = 0.40934749606521836
    206   5.91e-01    5.64e-05   5.91e-01   1.64e-04   2.21e-04     8 **
          F_t = 0.99999 | F = 0.5908068199582275 | F_t - F = 0.40918318004177257
    207   5.91e-01    5.37e-05   5.91e-01  -6.37e-05  -9.98e-06     8
          F_t = 0.99999 | F = 0.5907431277254435 | F_t - F = 0.4092468722745566
    208   5.91e-01    5.65e-05   5.91e-01   1.78e-04   2.34e-04     7 **
          F_t = 0.99999 | F = 0.5909207236761674 | F_t - F = 0.4090692763238326
    209   5.91e-01    5.35e-05   5.91e-01  -6.76e-05  -1.41e-05     7
          F_t = 0.99999 | F = 0.5908531149262491 | F_t - F = 0.4091368850737509
    210   5.91e-01    5.65e-05   5.91e-01   1.91e-04   2.48e-04     7 **
          F_t = 0.99999 | F = 0.591044362629325 | F_t - F = 0.408945637370675
    211   5.91e-01    5.33e-05   5.91e-01  -7.25e-05  -1.91e-05    10
          F_t = 0.99999 | F = 0.5909718928832673 | F_t - F = 0.4090181071167327
    212   5.91e-01    5.65e-05   5.91e-01   2.05e-04   2.62e-04     9 **
          F_t = 0.99999 | F = 0.5911773077807515 | F_t - F = 0.40881269221924854
    213   5.91e-01    5.31e-05   5.91e-01  -7.82e-05  -2.51e-05     8
          F_t = 0.99999 | F = 0.5910990776034535 | F_t - F = 0.40889092239654656
    214   5.91e-01    5.66e-05   5.91e-01   2.20e-04   2.77e-04     8 **
          F_t = 0.99999 | F = 0.5913194146798382 | F_t - F = 0.40867058532016187
    215   5.91e-01    5.29e-05   5.91e-01  -8.51e-05  -3.22e-05     8
          F_t = 0.99999 | F = 0.5912343308552949 | F_t - F = 0.4087556691447052
    216   5.91e-01    5.66e-05   5.92e-01   2.36e-04   2.92e-04     9 **
          F_t = 0.99999 | F = 0.5914701205437519 | F_t - F = 0.4085198794562481
    217   5.91e-01    5.26e-05   5.91e-01  -9.26e-05  -4.00e-05     8
          F_t = 0.99999 | F = 0.5913774972893114 | F_t - F = 0.4086125027106886
    218   5.92e-01    5.67e-05   5.92e-01   2.52e-04   3.09e-04     9 **
          F_t = 0.99999 | F = 0.5916299778681945 | F_t - F = 0.40836002213180556
    219   5.92e-01    5.24e-05   5.92e-01  -1.02e-04  -4.93e-05     8
          F_t = 0.99999 | F = 0.5915282864743359 | F_t - F = 0.4084617135256642
    220   5.92e-01    5.68e-05   5.92e-01   2.69e-04   3.26e-04     9 **
          F_t = 0.99999 | F = 0.5917975576043499 | F_t - F = 0.4081924423956501
    221   5.92e-01    5.21e-05   5.92e-01  -1.11e-04  -5.92e-05     7
          F_t = 0.99999 | F = 0.591686260208233 | F_t - F = 0.40830373979176704
    222   5.92e-01    5.68e-05   5.92e-01   2.88e-04   3.45e-04     7 **
          F_t = 0.99999 | F = 0.5919744113631085 | F_t - F = 0.4080155886368916
    223   5.92e-01    5.18e-05   5.92e-01  -1.22e-04  -7.01e-05     8
          F_t = 0.99999 | F = 0.5918524454201458 | F_t - F = 0.40813755457985423
    224   5.92e-01    5.70e-05   5.92e-01   3.08e-04   3.65e-04    10 **
          F_t = 0.99999 | F = 0.5921606497856732 | F_t - F = 0.40782935021432687
    225   5.92e-01    5.15e-05   5.92e-01  -1.34e-04  -8.26e-05    10
          F_t = 0.99999 | F = 0.5920265409496357 | F_t - F = 0.40796345905036435
    226   5.92e-01    5.71e-05   5.92e-01   3.29e-04   3.86e-04     8 **
          F_t = 0.99999 | F = 0.5923558525264299 | F_t - F = 0.4076341474735702
    227   5.92e-01    5.12e-05   5.92e-01  -1.47e-04  -9.61e-05     7
          F_t = 0.99999 | F = 0.5922085286305051 | F_t - F = 0.40778147136949494
    228   5.93e-01    5.72e-05   5.93e-01   3.52e-04   4.09e-04     9 **
          F_t = 0.99999 | F = 0.5925607410985178 | F_t - F = 0.4074292589014823
    229   5.92e-01    5.09e-05   5.92e-01  -1.62e-04  -1.11e-04     8
          F_t = 0.99999 | F = 0.5923987198229782 | F_t - F = 0.40759128017702184
    230   5.93e-01    5.74e-05   5.93e-01   3.77e-04   4.34e-04     7 **
          F_t = 0.99999 | F = 0.5927754322172148 | F_t - F = 0.4072145677827852
    231   5.93e-01    5.06e-05   5.93e-01  -1.78e-04  -1.28e-04    12
          F_t = 0.99999 | F = 0.5925971278092399 | F_t - F = 0.40739287219076015
    232   5.93e-01    5.76e-05   5.93e-01   4.03e-04   4.61e-04     7 **
          F_t = 0.99999 | F = 0.5930000935703736 | F_t - F = 0.4069899064296264
    233   5.93e-01    5.03e-05   5.93e-01  -1.96e-04  -1.46e-04     8
          F_t = 0.99999 | F = 0.5928037820223276 | F_t - F = 0.4071862179776724
    234   5.93e-01    5.79e-05   5.93e-01   4.31e-04   4.89e-04     7 **
          F_t = 0.99999 | F = 0.5932349120387518 | F_t - F = 0.40675508796124826
    235   5.93e-01    4.99e-05   5.93e-01  -2.16e-04  -1.66e-04     7
          F_t = 0.99999 | F = 0.5930187116444307 | F_t - F = 0.4069712883555694
    236   5.93e-01    5.82e-05   5.94e-01   4.58e-04   5.16e-04     7 **
          F_t = 0.99999 | F = 0.5934769618965804 | F_t - F = 0.40651303810341965
    237   5.93e-01    4.96e-05   5.93e-01  -2.50e-04  -2.01e-04     7
          F_t = 0.99999 | F = 0.593226536855955 | F_t - F = 0.4067634631440451
    238   5.94e-01    5.88e-05   5.94e-01   4.79e-04   5.38e-04     9 **
          F_t = 0.99999 | F = 0.5937054793648403 | F_t - F = 0.40628452063515974
    239   5.93e-01    4.96e-05   5.93e-01  -3.60e-04  -3.10e-04     9
          F_t = 0.99999 | F = 0.5933454111082053 | F_t - F = 0.4066445888917948
    240   5.94e-01    5.99e-05   5.94e-01   4.11e-04   4.71e-04     7 **
          F_t = 0.99999 | F = 0.5937568116905656 | F_t - F = 0.40623318830943445
    241   5.93e-01    4.98e-05   5.93e-01  -4.14e-04  -3.65e-04     8
          F_t = 0.99999 | F = 0.5933423613491541 | F_t - F = 0.40664763865084597
    242   5.94e-01    6.10e-05   5.94e-01   4.44e-04   5.05e-04     7 **
          F_t = 0.99999 | F = 0.5937860772805322 | F_t - F = 0.4062039227194678
    243   5.93e-01    5.00e-05   5.93e-01  -4.44e-04  -3.94e-04     7
          F_t = 0.99999 | F = 0.5933418659894176 | F_t - F = 0.4066481340105824
    244   5.94e-01    6.20e-05   5.94e-01   4.82e-04   5.44e-04     9 **
          F_t = 0.99999 | F = 0.5938238350098487 | F_t - F = 0.40616616499015135
    245   5.93e-01    5.00e-05   5.93e-01  -4.75e-04  -4.25e-04     8
          F_t = 0.99999 | F = 0.5933491215492946 | F_t - F = 0.4066408784507054
    246   5.94e-01    6.31e-05   5.94e-01   5.24e-04   5.87e-04     8 **
          F_t = 0.99999 | F = 0.5938734432593162 | F_t - F = 0.4061165567406838
    247   5.93e-01    5.00e-05   5.93e-01  -5.08e-04  -4.57e-04     8
          F_t = 0.99999 | F = 0.5933659257661187 | F_t - F = 0.40662407423388136
    248   5.94e-01    6.41e-05   5.94e-01   5.69e-04   6.33e-04     8 **
          F_t = 0.99999 | F = 0.5939351670661818 | F_t - F = 0.4060548329338183
    249   5.93e-01    5.00e-05   5.93e-01  -5.44e-04  -4.94e-04     8
          F_t = 0.99999 | F = 0.5933910728773462 | F_t - F = 0.4065989271226539
    250   5.94e-01    6.53e-05   5.94e-01   6.17e-04   6.83e-04     7 **
          F_t = 0.99999 | F = 0.5940084278114295 | F_t - F = 0.40598157218857056
    251   5.93e-01    4.99e-05   5.93e-01  -5.83e-04  -5.33e-04     9
          F_t = 0.99999 | F = 0.5934252178744563 | F_t - F = 0.4065647821255437
    252   5.94e-01    6.65e-05   5.94e-01   6.70e-04   7.37e-04     9 **
          F_t = 0.99999 | F = 0.5940952955195538 | F_t - F = 0.4058947044804463
    253   5.93e-01    4.98e-05   5.94e-01  -6.27e-04  -5.77e-04     7
          F_t = 0.99999 | F = 0.5934684444160303 | F_t - F = 0.40652155558396974
    254   5.94e-01    6.78e-05   5.94e-01   7.25e-04   7.93e-04     7 **
          F_t = 0.99999 | F = 0.5941938674609331 | F_t - F = 0.405796132539067
    255   5.94e-01    4.97e-05   5.94e-01  -6.74e-04  -6.24e-04     7
          F_t = 0.99999 | F = 0.593519718666421 | F_t - F = 0.4064702813335791
    256   5.94e-01    6.92e-05   5.94e-01   7.86e-04   8.55e-04     7 **
          F_t = 0.99999 | F = 0.5943052701003373 | F_t - F = 0.40568472989966275
    257   5.94e-01    4.96e-05   5.94e-01  -7.26e-04  -6.77e-04     7
          F_t = 0.99999 | F = 0.593578799738222 | F_t - F = 0.406411200261778
    258   5.94e-01    7.08e-05   5.94e-01   8.50e-04   9.20e-04     7 **
          F_t = 0.99999 | F = 0.5944284223445776 | F_t - F = 0.40556157765542244
    259   5.94e-01    4.95e-05   5.94e-01  -7.83e-04  -7.34e-04     7
          F_t = 0.99999 | F = 0.5936451335325479 | F_t - F = 0.40634486646745216
    260   5.95e-01    7.25e-05   5.95e-01   9.19e-04   9.92e-04     7 **
          F_t = 0.99999 | F = 0.5945645615570448 | F_t - F = 0.4054254384429552
    261   5.94e-01    4.95e-05   5.94e-01  -8.46e-04  -7.96e-04     8
          F_t = 0.99999 | F = 0.5937189956427924 | F_t - F = 0.40627100435720764
    262   5.95e-01    7.43e-05   5.95e-01   9.94e-04   1.07e-03     8 **
          F_t = 0.99999 | F = 0.5947133145303568 | F_t - F = 0.40527668546964324
    263   5.94e-01    4.95e-05   5.94e-01  -9.14e-04  -8.64e-04     9
          F_t = 0.99999 | F = 0.5937996669332682 | F_t - F = 0.4061903330667318
    264   5.95e-01    7.64e-05   5.95e-01   1.08e-03   1.15e-03     8 **
          F_t = 0.99999 | F = 0.5948747758044377 | F_t - F = 0.40511522419556234
    265   5.94e-01    4.95e-05   5.94e-01  -9.88e-04  -9.38e-04     7
          F_t = 0.99999 | F = 0.5938868788340251 | F_t - F = 0.4061031211659749
    266   5.95e-01    7.88e-05   5.95e-01   1.16e-03   1.24e-03     7 **
          F_t = 0.99999 | F = 0.5950490747768864 | F_t - F = 0.40494092522311365
    267   5.94e-01    4.95e-05   5.94e-01  -1.08e-03  -1.04e-03     7
          F_t = 0.99999 | F = 0.5939641386644755 | F_t - F = 0.40602586133552454
    268   5.95e-01    8.24e-05   5.95e-01   1.22e-03   1.30e-03     7 **
          F_t = 0.99999 | F = 0.5951828976494321 | F_t - F = 0.40480710235056794
    269   5.94e-01    4.97e-05   5.94e-01  -1.18e-03  -1.13e-03     8
          F_t = 0.99999 | F = 0.5940040792030687 | F_t - F = 0.4059859207969313
    270   5.95e-01    8.55e-05   5.95e-01   1.31e-03   1.40e-03     9 **
          F_t = 0.99999 | F = 0.5953143528119132 | F_t - F = 0.4046756471880868
    271   5.94e-01    5.01e-05   5.94e-01  -1.27e-03  -1.22e-03     9
          F_t = 0.99999 | F = 0.5940474040508464 | F_t - F = 0.4059425959491536
    272   5.95e-01    8.88e-05   5.96e-01   1.41e-03   1.50e-03    10 **
          F_t = 0.99999 | F = 0.5954578487051445 | F_t - F = 0.40453215129485554
    273   5.94e-01    5.06e-05   5.94e-01  -1.36e-03  -1.31e-03     8
          F_t = 0.99999 | F = 0.594095890762302 | F_t - F = 0.4058941092376981
    274   5.96e-01    9.25e-05   5.96e-01   1.52e-03   1.62e-03     7 **
          F_t = 0.99999 | F = 0.5956187408474856 | F_t - F = 0.4043712591525145
    275   5.94e-01    5.13e-05   5.94e-01  -1.47e-03  -1.42e-03     8
          F_t = 0.99999 | F = 0.5941519703870495 | F_t - F = 0.40583802961295057
    276   5.96e-01    9.67e-05   5.96e-01   1.64e-03   1.74e-03     8 **
          F_t = 0.99999 | F = 0.5957946592517848 | F_t - F = 0.4041953407482153
    277   5.94e-01    5.22e-05   5.94e-01  -1.58e-03  -1.53e-03     8
          F_t = 0.99999 | F = 0.5942131244099431 | F_t - F = 0.40577687559005693
    278   5.96e-01    1.01e-04   5.96e-01   1.77e-03   1.87e-03     7 **
          F_t = 0.99999 | F = 0.595986105294329 | F_t - F = 0.404003894705671
    279   5.94e-01    5.33e-05   5.94e-01  -1.71e-03  -1.65e-03     7
          F_t = 0.99999 | F = 0.594278973470739 | F_t - F = 0.40571102652926105
    280   5.96e-01    1.07e-04   5.96e-01   1.91e-03   2.02e-03     7 **
          F_t = 0.99999 | F = 0.5961927604398517 | F_t - F = 0.40379723956014835
    281   5.94e-01    5.47e-05   5.94e-01  -1.84e-03  -1.79e-03     7
          F_t = 0.99999 | F = 0.5943485833506661 | F_t - F = 0.40564141664933395
    282   5.96e-01    1.26e-04   5.96e-01   1.68e-03   1.81e-03     7 **
          F_t = 0.99999 | F = 0.5960319751458982 | F_t - F = 0.4039580248541018
    283   5.94e-01    6.02e-05   5.94e-01  -1.64e-03  -1.58e-03     7
          F_t = 0.99999 | F = 0.594390824670554 | F_t - F = 0.405599175329446
    284   5.96e-01    1.44e-04   5.96e-01   1.29e-03   1.44e-03     7 **
          F_t = 0.99999 | F = 0.5956839653710352 | F_t - F = 0.40430603462896486
    285   5.94e-01    6.10e-05   5.94e-01  -1.49e-03  -1.43e-03     7
          F_t = 0.99999 | F = 0.5941912153527299 | F_t - F = 0.40579878464727015
    286   5.95e-01    1.42e-04   5.96e-01   1.21e-03   1.35e-03     7 **
          F_t = 0.99999 | F = 0.5953967231171349 | F_t - F = 0.40459327688286517
    287   5.94e-01    6.02e-05   5.94e-01  -1.41e-03  -1.35e-03     7
          F_t = 0.99999 | F = 0.5939870470179065 | F_t - F = 0.40600295298209355
    288   5.95e-01    1.39e-04   5.95e-01   1.13e-03   1.27e-03     7 **
          F_t = 0.99999 | F = 0.595118977436837 | F_t - F = 0.4048710225631631
    289   5.94e-01    5.95e-05   5.94e-01  -1.34e-03  -1.28e-03     7
          F_t = 0.99999 | F = 0.5937813102691174 | F_t - F = 0.40620868973088264
    290   5.95e-01    1.37e-04   5.95e-01   1.07e-03   1.20e-03     6 **
          F_t = 0.99999 | F = 0.5948492333511144 | F_t - F = 0.40514076664888565
    291   5.94e-01    5.90e-05   5.94e-01  -1.27e-03  -1.21e-03     7
          F_t = 0.99999 | F = 0.5935766073270456 | F_t - F = 0.4064133926729544
    292   5.95e-01    1.35e-04   5.95e-01   1.01e-03   1.15e-03     7 **
          F_t = 0.99999 | F = 0.594588410370356 | F_t - F = 0.405401589629644
    293   5.93e-01    5.85e-05   5.93e-01  -1.21e-03  -1.15e-03     7
          F_t = 0.99999 | F = 0.5933749815456357 | F_t - F = 0.4066150184543643
    294   5.94e-01    1.33e-04   5.94e-01   9.62e-04   1.09e-03     7 **
          F_t = 0.99999 | F = 0.5943369666749719 | F_t - F = 0.4056530333250281
    295   5.93e-01    5.82e-05   5.93e-01  -1.16e-03  -1.10e-03     8
          F_t = 0.99999 | F = 0.5931775999269634 | F_t - F = 0.40681240007303665
    296   5.94e-01    1.31e-04   5.94e-01   9.17e-04   1.05e-03     9 **
          F_t = 0.99999 | F = 0.5940949796523958 | F_t - F = 0.4058950203476043
    297   5.93e-01    5.79e-05   5.93e-01  -1.11e-03  -1.05e-03     7
          F_t = 0.99999 | F = 0.5929854250178964 | F_t - F = 0.40700457498210363
    298   5.94e-01    1.29e-04   5.94e-01   8.78e-04   1.01e-03     7 **
          F_t = 0.99999 | F = 0.5938629342862215 | F_t - F = 0.40612706571377855
    299   5.93e-01    5.77e-05   5.93e-01  -1.06e-03  -1.01e-03     7
          F_t = 0.99999 | F = 0.5927993303686167 | F_t - F = 0.4071906696313834
    300   5.94e-01    1.27e-04   5.94e-01   8.41e-04   9.69e-04     8 **
          F_t = 0.99999 | F = 0.5936407417712127 | F_t - F = 0.4063492582287873
    301   5.93e-01    5.76e-05   5.93e-01  -1.02e-03  -9.63e-04     8
          F_t = 0.99999 | F = 0.592619700374086 | F_t - F = 0.4073702996259141
    302   5.93e-01    1.26e-04   5.94e-01   8.09e-04   9.34e-04     7 **
          F_t = 0.99999 | F = 0.5934282874452638 | F_t - F = 0.4065617125547363
    303   5.92e-01    5.75e-05   5.93e-01  -9.81e-04  -9.24e-04     7
          F_t = 0.99999 | F = 0.5924468138073423 | F_t - F = 0.4075431861926577
    304   5.93e-01    1.24e-04   5.93e-01   7.78e-04   9.03e-04     7 **
          F_t = 0.99999 | F = 0.5932251345188831 | F_t - F = 0.4067648654811169
    305   5.92e-01    5.75e-05   5.92e-01  -9.45e-04  -8.88e-04     8
          F_t = 0.99999 | F = 0.5922801053999612 | F_t - F = 0.4077098946000388
    306   5.93e-01    1.23e-04   5.93e-01   7.50e-04   8.73e-04     9 **
          F_t = 0.99999 | F = 0.593030001890971 | F_t - F = 0.40695999810902905
    307   5.92e-01    5.75e-05   5.92e-01  -9.10e-04  -8.53e-04    11
          F_t = 0.99999 | F = 0.5921196813401451 | F_t - F = 0.4078703186598549
    308   5.93e-01    1.22e-04   5.93e-01   7.25e-04   8.47e-04     9 **
          F_t = 0.99999 | F = 0.5928445979996136 | F_t - F = 0.4071454020003864
    309   5.92e-01    5.76e-05   5.92e-01  -8.78e-04  -8.20e-04     9
          F_t = 0.99999 | F = 0.5919667481125073 | F_t - F = 0.4080232518874928
    310   5.93e-01    1.21e-04   5.93e-01   7.02e-04   8.23e-04     7 **
          F_t = 0.99999 | F = 0.592668726519856 | F_t - F = 0.407321273480144
    311   5.92e-01    5.77e-05   5.92e-01  -8.47e-04  -7.90e-04     8
          F_t = 0.99999 | F = 0.5918213086501322 | F_t - F = 0.4081686913498679
    312   5.93e-01    1.20e-04   5.93e-01   6.81e-04   8.00e-04    10 **
          F_t = 0.99999 | F = 0.5925022208334192 | F_t - F = 0.40748777916658085
    313   5.92e-01    5.79e-05   5.92e-01  -8.19e-04  -7.61e-04     9
          F_t = 0.99999 | F = 0.5916833950601281 | F_t - F = 0.4083066049398719
    314   5.92e-01    1.21e-04   5.92e-01   3.62e-04   4.83e-04    13 **
          F_t = 0.99999 | F = 0.5920452349674591 | F_t - F = 0.40794476503254096
    315   5.91e-01    5.95e-05   5.91e-01  -9.60e-04  -9.01e-04     9
          F_t = 0.99999 | F = 0.5910852387663834 | F_t - F = 0.40890476123361663
    316   5.91e-01    1.22e-04   5.92e-01   3.06e-04   4.28e-04     8 **
          F_t = 0.99999 | F = 0.5913916511436921 | F_t - F = 0.40859834885630797
    317   5.90e-01    6.09e-05   5.91e-01  -9.14e-04  -8.53e-04     8
          F_t = 0.99999 | F = 0.590478007556233 | F_t - F = 0.409511992443767
    318   5.91e-01    1.23e-04   5.91e-01   2.89e-04   4.12e-04     8 **
          F_t = 0.99999 | F = 0.5907668150841312 | F_t - F = 0.40922318491586884
    319   5.90e-01    6.21e-05   5.90e-01  -8.75e-04  -8.13e-04     8
          F_t = 0.99999 | F = 0.589892096818303 | F_t - F = 0.41009790318169703
    320   5.90e-01    1.23e-04   5.90e-01   2.69e-04   3.92e-04     7 **
          F_t = 0.99999 | F = 0.5901608723985422 | F_t - F = 0.40982912760145784
    321   5.89e-01    6.33e-05   5.89e-01  -8.41e-04  -7.78e-04     7
          F_t = 0.99999 | F = 0.5893200417782788 | F_t - F = 0.41066995822172125
    322   5.90e-01    1.24e-04   5.90e-01   2.48e-04   3.72e-04     8 **
          F_t = 0.99999 | F = 0.5895684401297387 | F_t - F = 0.4104215598702613
    323   5.89e-01    6.44e-05   5.89e-01  -8.10e-04  -7.45e-04     8
          F_t = 0.99999 | F = 0.5887585461919618 | F_t - F = 0.41123145380803827
    324   5.89e-01    1.24e-04   5.89e-01   2.29e-04   3.53e-04     7 **
          F_t = 0.99999 | F = 0.5889873978993727 | F_t - F = 0.41100260210062733
    325   5.88e-01    6.55e-05   5.88e-01  -7.81e-04  -7.15e-04     7
          F_t = 0.99999 | F = 0.5882065491861146 | F_t - F = 0.41178345081388545
    326   5.88e-01    1.25e-04   5.89e-01   2.11e-04   3.35e-04     7 **
          F_t = 0.99999 | F = 0.5884171360218063 | F_t - F = 0.4115728639781937
    327   5.88e-01    6.66e-05   5.88e-01  -7.53e-04  -6.87e-04     7
          F_t = 0.99999 | F = 0.587663667449197 | F_t - F = 0.4123263325508031
    328   5.88e-01    1.25e-04   5.88e-01   1.94e-04   3.18e-04     8 **
          F_t = 0.99999 | F = 0.5878571949224596 | F_t - F = 0.41213280507754046
    329   5.87e-01    6.77e-05   5.87e-01  -7.27e-04  -6.60e-04     8
          F_t = 0.99999 | F = 0.5871299628472765 | F_t - F = 0.41286003715272357
    330   5.87e-01    1.25e-04   5.87e-01   1.78e-04   3.03e-04    12 **
          F_t = 0.99999 | F = 0.5873078623287811 | F_t - F = 0.412682137671219
    331   5.87e-01    6.88e-05   5.87e-01  -7.02e-04  -6.33e-04     8
          F_t = 0.99999 | F = 0.5866061845925132 | F_t - F = 0.4133838154074868
    332   5.87e-01    1.26e-04   5.87e-01   1.64e-04   2.89e-04     8 **
          F_t = 0.99999 | F = 0.5867698558874694 | F_t - F = 0.4132201441125306
    333   5.86e-01    6.99e-05   5.86e-01  -6.77e-04  -6.07e-04     7
          F_t = 0.99999 | F = 0.5860928127886802 | F_t - F = 0.41389718721131985
    334   5.86e-01    1.26e-04   5.86e-01   1.51e-04   2.77e-04     7 **
          F_t = 0.99999 | F = 0.5862435303093696 | F_t - F = 0.41374646969063045
    335   5.86e-01    7.09e-05   5.86e-01  -6.53e-04  -5.82e-04     8
          F_t = 0.99999 | F = 0.5855902573101321 | F_t - F = 0.4143997426898679
    336   5.86e-01    1.26e-04   5.86e-01   1.39e-04   2.65e-04     8 **
          F_t = 0.99999 | F = 0.5857292170382482 | F_t - F = 0.41426078296175184
    337   5.85e-01    7.20e-05   5.85e-01  -6.30e-04  -5.58e-04     8
          F_t = 0.99999 | F = 0.585098893537405 | F_t - F = 0.4148911064625951
    338   5.85e-01    1.26e-04   5.85e-01   1.28e-04   2.55e-04     7 **
          F_t = 0.99999 | F = 0.5852272170534655 | F_t - F = 0.41476278294653457
    339   5.85e-01    7.30e-05   5.85e-01  -6.08e-04  -5.35e-04    10
          F_t = 0.99999 | F = 0.5846190617890852 | F_t - F = 0.41537093821091486
    340   5.85e-01    1.27e-04   5.85e-01   1.19e-04   2.45e-04    10 **
          F_t = 0.99999 | F = 0.5847378014339838 | F_t - F = 0.41525219856601625
    341   5.84e-01    7.41e-05   5.84e-01  -5.90e-04  -5.15e-04     8
          F_t = 0.99999 | F = 0.5841482186122433 | F_t - F = 0.41584178138775674
    342   5.84e-01    1.27e-04   5.84e-01   1.03e-04   2.30e-04    11 **
          F_t = 0.99999 | F = 0.5842512845951227 | F_t - F = 0.4157387154048774
    343   5.84e-01    7.54e-05   5.84e-01  -5.82e-04  -5.07e-04    13
          F_t = 0.99999 | F = 0.5836688134175939 | F_t - F = 0.41632118658240613
    344   5.84e-01    1.27e-04   5.84e-01   9.34e-05   2.21e-04    10 **
          F_t = 0.99999 | F = 0.5837622072187975 | F_t - F = 0.4162277927812026
    345   5.83e-01    7.65e-05   5.83e-01  -5.62e-04  -4.86e-04     9
          F_t = 0.99999 | F = 0.5831997968261107 | F_t - F = 0.4167902031738894
    346   5.83e-01    1.28e-04   5.83e-01   8.64e-05   2.14e-04     8 **
          F_t = 0.99999 | F = 0.5832861798432306 | F_t - F = 0.41670382015676943
    347   5.83e-01    7.77e-05   5.83e-01  -5.42e-04  -4.65e-04     8
          F_t = 0.99999 | F = 0.5827439805813893 | F_t - F = 0.4172460194186107
    348   5.83e-01    1.28e-04   5.83e-01   8.06e-05   2.09e-04     8 **
          F_t = 0.99999 | F = 0.5828245410649996 | F_t - F = 0.41716545893500045
    349   5.82e-01    7.87e-05   5.82e-01  -5.23e-04  -4.44e-04     9
          F_t = 0.99999 | F = 0.5823019598440017 | F_t - F = 0.41768804015599836
    350   5.82e-01    1.28e-04   5.83e-01   7.55e-05   2.04e-04     8 **
          F_t = 0.99999 | F = 0.5823775011540343 | F_t - F = 0.41761249884596574
    351   5.82e-01    7.98e-05   5.82e-01  -5.04e-04  -4.24e-04     8
          F_t = 0.99999 | F = 0.581873854608174 | F_t - F = 0.41811614539182607
    352   5.82e-01    1.29e-04   5.82e-01   7.12e-05   2.00e-04     8 **
          F_t = 0.99999 | F = 0.5819450660215729 | F_t - F = 0.4180449339784271
    353   5.81e-01    8.09e-05   5.82e-01  -4.85e-04  -4.05e-04     7
          F_t = 0.99999 | F = 0.5814596879312485 | F_t - F = 0.4185303120687516
    354   5.82e-01    1.29e-04   5.82e-01   6.75e-05   1.96e-04     7 **
          F_t = 0.99999 | F = 0.5815272075752316 | F_t - F = 0.41846279242476847
    355   5.81e-01    8.19e-05   5.81e-01  -4.68e-04  -3.86e-04     8
          F_t = 0.99999 | F = 0.5810594674636085 | F_t - F = 0.41893053253639156
    356   5.81e-01    1.29e-04   5.81e-01   6.44e-05   1.94e-04     8 **
          F_t = 0.99999 | F = 0.5811238985448329 | F_t - F = 0.4188661014551671
    357   5.81e-01    8.32e-05   5.81e-01  -4.70e-04  -3.87e-04     7
          F_t = 0.99999 | F = 0.5806536887605525 | F_t - F = 0.4193363112394476
    358   5.81e-01    1.31e-04   5.81e-01  -7.02e-06   1.24e-04     8 *
          F_t = 0.99999 | F = 0.5806466671016436 | F_t - F = 0.41934333289835646
    359   5.80e-01    8.54e-05   5.80e-01  -5.23e-04  -4.37e-04     8
          F_t = 0.99999 | F = 0.5801241086944473 | F_t - F = 0.41986589130555274
    360   5.80e-01    1.32e-04   5.80e-01  -2.08e-05   1.12e-04     8 *
          F_t = 0.99999 | F = 0.5801033013729352 | F_t - F = 0.41988669862706485
    361   5.80e-01    8.73e-05   5.80e-01  -5.12e-04  -4.24e-04     7
          F_t = 0.99999 | F = 0.5795915416517375 | F_t - F = 0.4203984583482625
    362   5.80e-01    1.34e-04   5.80e-01  -2.79e-05   1.06e-04     7 *
          F_t = 0.99999 | F = 0.5795636584750272 | F_t - F = 0.4204263415249728
    363   5.79e-01    8.91e-05   5.79e-01  -4.96e-04  -4.07e-04     8
          F_t = 0.99999 | F = 0.5790673858060479 | F_t - F = 0.42092261419395216
    364   5.79e-01    1.35e-04   5.79e-01  -3.26e-05   1.02e-04     8 *
          F_t = 0.99999 | F = 0.5790347935717985 | F_t - F = 0.4209552064282015
    365   5.79e-01    9.08e-05   5.79e-01  -4.80e-04  -3.89e-04     8
          F_t = 0.99999 | F = 0.5785544989645787 | F_t - F = 0.4214355010354214
    366   5.79e-01    1.36e-04   5.79e-01  -3.65e-05   9.92e-05    12 *
          F_t = 0.99999 | F = 0.5785180187438753 | F_t - F = 0.42147198125612473
    367   5.78e-01    9.25e-05   5.78e-01  -4.65e-04  -3.72e-04     9
          F_t = 0.99999 | F = 0.5780534092982827 | F_t - F = 0.4219365907017173
    368   5.78e-01    1.37e-04   5.78e-01  -3.99e-05   9.68e-05    12 *
          F_t = 0.99999 | F = 0.5780135239526963 | F_t - F = 0.4219764760473037
    369   5.78e-01    9.42e-05   5.78e-01  -4.49e-04  -3.55e-04     9
          F_t = 0.99999 | F = 0.577564121507718 | F_t - F = 0.4224258784922821
    370   5.78e-01    1.38e-04   5.78e-01  -4.29e-05   9.48e-05     9 *
          F_t = 0.99999 | F = 0.5775212340199294 | F_t - F = 0.42246876598007066
    371   5.77e-01    9.58e-05   5.77e-01  -4.35e-04  -3.39e-04     8
          F_t = 0.99999 | F = 0.5770865270964609 | F_t - F = 0.42290347290353913
    372   5.77e-01    1.39e-04   5.77e-01  -4.55e-05   9.31e-05     7 *
          F_t = 0.99999 | F = 0.5770410209971372 | F_t - F = 0.4229489790028629
    373   5.77e-01    9.75e-05   5.77e-01  -4.21e-04  -3.23e-04     7
          F_t = 0.99999 | F = 0.5766205088929368 | F_t - F = 0.42336949110706323
    374   5.77e-01    1.40e-04   5.77e-01  -4.77e-05   9.18e-05     8 *
          F_t = 0.99999 | F = 0.5765727603460369 | F_t - F = 0.42341723965396316
    375   5.76e-01    9.91e-05   5.76e-01  -4.07e-04  -3.08e-04     8
          F_t = 0.99999 | F = 0.5761659650140248 | F_t - F = 0.4238240349859752
    376   5.76e-01    1.41e-04   5.76e-01  -4.96e-05   9.09e-05     8 *
          F_t = 0.99999 | F = 0.5761163420525774 | F_t - F = 0.4238736579474226
    377   5.76e-01    1.01e-04   5.76e-01  -3.94e-04  -2.93e-04     9
          F_t = 0.99999 | F = 0.5757228096464905 | F_t - F = 0.42426719035350957
    378   5.76e-01    1.41e-04   5.76e-01  -5.11e-05   9.03e-05     8 *
          F_t = 0.99999 | F = 0.5756716687075967 | F_t - F = 0.4243183312924034
    379   5.75e-01    1.02e-04   5.75e-01  -3.81e-04  -2.78e-04     9
          F_t = 0.99999 | F = 0.5752909681021988 | F_t - F = 0.4246990318978012
    380   5.75e-01    1.42e-04   5.75e-01  -5.23e-05   9.00e-05     7 *
          F_t = 0.99999 | F = 0.5752386508985856 | F_t - F = 0.42475134910141443
    381   5.75e-01    1.04e-04   5.75e-01  -3.68e-04  -2.64e-04     7
          F_t = 0.99999 | F = 0.574870371684759 | F_t - F = 0.4251196283152411
    382   5.75e-01    1.43e-04   5.75e-01  -5.32e-05   9.00e-05     8 *
          F_t = 0.99999 | F = 0.5748172031108907 | F_t - F = 0.42517279688910936
    383   5.74e-01    1.05e-04   5.75e-01  -3.56e-04  -2.51e-04     8
          F_t = 0.99999 | F = 0.5744609537862237 | F_t - F = 0.4255290462137763
    384   5.74e-01    1.44e-04   5.75e-01  -5.37e-05   9.04e-05     7 *
          F_t = 0.99999 | F = 0.5744072408293958 | F_t - F = 0.4255827591706043
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-484-b2d038b52438> in <module>
     11         if tot.is_integer():
     12             tot = int(tot)
---> 13         run_optim(tot, λ, ϕ)
     14     else:
     15         print('T = {} already exists'.format(tot))

<ipython-input-483-13d4edb38188> in run_optim(T, lambda_a, φ)
     63             modify_params_after_iter = modify_params,
     64             #iter_stop=1,
---> 65             continue_from = opt_result,
     66         )
     67         print(opt_result.message)

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/krotov/optimize.py in optimize_pulses(objectives, pulse_options, tlist, propagator, chi_constructor, mu, sigma, iter_start, iter_stop, check_convergence, state_dependent_constraint, info_hook, modify_params_after_iter, storage, parallel_map, store_all_pulses, continue_from, skip_initial_forward_propagation)
    359                 tlist,
    360                 propagators,
--> 361                 storage,
    362             ),
    363         )

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/qutip/parallel.py in serial_map(task, values, task_args, task_kwargs, **kwargs)
    181     for n, value in enumerate(values):
    182         progress_bar.update(n)
--> 183         result = task(value, *task_args, **task_kwargs)
    184         results.append(result)
    185     progress_bar.finished()

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/krotov/optimize.py in _backward_propagation(i_state, chi_states, adjoint_objectives, pulses, pulses_mapping, tlist, propagators, storage)
    799             c_ops,
    800             backwards=True,
--> 801             initialize=(time_index == len(tlist) - 2),
    802         )
    803         storage_array[time_index] = state

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/krotov/propagators.py in expm(H, state, dt, c_ops, backwards, initialize)
    109     )
    110     if ok_types:
--> 111         return ((A * dt).expm())(state)
    112     else:
    113         raise NotImplementedError(

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/qutip/qobj.py in expm(self, method)
   1097 
   1098         if method == 'dense':
-> 1099             F = sp_expm(self.data, sparse=False)
   1100 
   1101         elif method == 'sparse':

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/qutip/sparse.py in sp_expm(A, sparse)
    393         E = spla.expm(A.tocsc())
    394     else:
--> 395         E = spla.expm(A.toarray())
    396     return sp.csr_matrix(E)
    397 

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/scipy/sparse/linalg/matfuncs.py in expm(A)
    604             [  0.        ,   0.        ,  20.08553692]])
    605     """
--> 606     return _expm(A, use_exact_onenorm='auto')
    607 
    608 

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/scipy/sparse/linalg/matfuncs.py in _expm(A, use_exact_onenorm)
    658     # Try Pade orders 7 and 9.
    659     eta_3 = max(h.d6_tight, h.d8_loose)
--> 660     if eta_3 < 9.504178996162932e-001 and _ell(h.A, 7) == 0:
    661         U, V = h.pade7()
    662         return _solve_P_Q(U, V, structure=structure)

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/scipy/sparse/linalg/matfuncs.py in _ell(A, m)
    857 
    858     # Compute the one-norm of matrix power p of abs(A).
--> 859     A_abs_onenorm = _onenorm_matrix_power_nnm(abs(A), p)
    860 
    861     # Treat zero norm as a special case.

~/miniconda3/envs/qutip-env/lib/python3.7/site-packages/scipy/sparse/linalg/matfuncs.py in _onenorm_matrix_power_nnm(A, p)
    109     M = A.T
    110     for i in range(p):
--> 111         v = M.dot(v)
    112     return np.max(v)
    113 

KeyboardInterrupt: 

Simulate dynamics of the optimized field

Having obtained the optimized control field, we can now plot it and calculate the population dynamics under this field.

In [465]:
def plot_results_3d(results):
    fig = plt.figure()
    ax = plt.axes(projection='3d')
    ax.set_xlabel('Iteration')
    ax.set_zlabel('Fidelity')
    ax.set_ylabel('Pulse length')
    ax.set_zlim(0,1.1)
    for (r, T) in results:
        plot_fid_convergence(ax, r.info_vals[1:], T)
    ax.view_init(elev=20, azim=340)
    return (fig, ax)

def plot_results_iteration(results):
    fig = plt.figure()
    ax = plt.axes()
    ax.set_xlabel('Iteration')
    ax.set_ylabel('Fidelity')
    for (r, T) in results:
        ax.plot(range(0,len(r.info_vals)-1), r.info_vals[1:])
    #print('F = {}'.format(r.info_vals[-1]))
    return (fig, ax)
    
def plot_results_pulse_length(results, iteration=-1, ax=None):
    if ax is None:
        ax = plt.axes()
    else:
        ax.clear()
    ax.set_xlabel('Pulse length')
    ax.set_ylabel('Fidelity')
    for (r, T) in results:
        it = min(len(r.info_vals)-1,iteration)
        ax.plot(T, r.info_vals[it], 'ok')
    ax.set_ylim(0,1.1)
    return ax
In [466]:
folder = 'results'
results = [(krotov.result.Result.load(os.path.join(os.getcwd(),folder,file), objectives=get_objectives(T=float(file.split('_')[-1][:-4]))), float(file.split('_')[-1][:-4])) for file in os.listdir(folder) if file[-4:]=='.dat']
%matplotlib inline
plot_results_3d(results)

#plot_results_pulse_length(results, iteration=0)

plot_results_iteration(results)
Out[466]:
(<Figure size 432x288 with 1 Axes>,
 <matplotlib.axes._subplots.AxesSubplot at 0x7fec64ae6550>)
In [565]:
plot_results_pulse_length(results, iteration=20, ax=ax)
ax = plt.axes()
def interactive_plot(iteration):
    plot_results_pulse_length(results, iteration=iteration, ax=ax)
interact(interactive_plot, iteration=widgets.IntSlider(min=0,max=900,step=1,value=0));
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-565-1caaa6fb57a5> in <module>
      3 def interactive_plot(iteration):
      4     plot_results_pulse_length(results, iteration=iteration, ax=ax)
----> 5 interact(interactive_plot, iteration=widgets.IntSlider(min=0,max=900,step=1,value=0));

NameError: name 'interact' is not defined
In [1394]:
import matplotlib2tikz
matplotlib2tikz.save("mytikz.tex")
In [1486]:
%matplotlib inline

Analyze

In [206]:
results = [(krotov.result.Result.load(os.path.join(os.getcwd(),folder,file), objectives=get_objectives(T=float(file.split('_')[-1][:-4]))), float(file.split('_')[-1][:-4])) for file in os.listdir(folder) if file[-4:]=='.dat']
results = results[-1:]
In [207]:
steps2 = len(results[0][0].tlist)*1000
for (r,_) in results:
    tlist = r.tlist
    #opt_dynamics = [ob.mesolve(tlist, progress_bar=True) for ob in r.objectives]
    #qubit_occupation(opt_dynamics[0])
    
    c = r.optimized_controls
    tlist2 = np.linspace(0, tlist[-1], steps2)
    Ω_q = c[0]+1j*c[1]
    Ω_q = np.interp(tlist2, tlist, Ω_q)
    Ω_r = c[2]+1j*c[3]
    Ω_r = np.interp(tlist2, tlist, Ω_r)
    
    pulses_lab = [Ω_q*np.exp(1j*ω_q*tlist2), np.conj(Ω_q)*np.exp(-1j*ω_q*tlist2), Ω_r*np.exp(1j*ω_r*tlist2), np.conj(Ω_r)*np.exp(-1j*ω_r*tlist2)]
    opt_dynamics = [ob.mesolve(tlist, progress_bar=True) for ob in r.optimized_objectives]
    plot_pulse(r.guess_controls[0], tlist)
    plot_pulse(r.guess_controls[1], tlist)
    plot_pulse(r.guess_controls[2], tlist)
    plot_pulse(r.guess_controls[3], tlist)
    plot_pulse(c[0], tlist)
    plot_pulse(c[1], tlist)
    plot_pulse(c[2], tlist)
    plot_pulse(c[3], tlist)
    plot_pulse(pulses_lab[0], tlist2)
    plot_pulse(pulses_lab[1], tlist2)
    plot_pulse(pulses_lab[2], tlist2)
    plot_pulse(pulses_lab[3], tlist2)
    qubit_occupation(opt_dynamics[0])
    resonator_occupation(opt_dynamics[0])
    plot_spectrum(pulses_lab[0], tlist2, mark_freq=[ω_q, ω_ef, ω_gf],mark_color=['r','g','b'], pos=0, xlim=[ω_q*0.9, ω_q*1.1])
    plot_spectrum(pulses_lab[2], tlist2, mark_freq=[ω_r],mark_color=['r','g','b'], pos=0, xlim=[ω_r*0.9, ω_r*1.1])
    #plot_spectrum(pulses_lab[1], tlist2, mark_freq=[ω_q, ω_ef, ω_gf], pos=0, xlim=[-ω_q*0.95, -ω_q*1.05])
    #H_lab = hamiltonian(ampl0=1, use_rotating=False, pulses=pulses_lab)
    #objectives_lab = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H_lab) for ψ in ϕ]
    
    
/home/wello/miniconda3/envs/qutip-env/lib/python3.7/site-packages/Cython/Compiler/Main.py:367: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /mnt/c/Users/johan/Development/cat-state-encoding/Krotov/rhs46402.pyx
  tree = Parsing.p_module(s, pxd, full_module_name)
10.0%. Run time:   0.01s. Est. time left: 00:00:00:00
20.0%. Run time:   0.03s. Est. time left: 00:00:00:00
30.0%. Run time:   0.04s. Est. time left: 00:00:00:00
40.0%. Run time:   0.06s. Est. time left: 00:00:00:00
50.0%. Run time:   0.08s. Est. time left: 00:00:00:00
60.0%. Run time:   0.10s. Est. time left: 00:00:00:00
70.0%. Run time:   0.12s. Est. time left: 00:00:00:00
80.0%. Run time:   0.14s. Est. time left: 00:00:00:00
90.0%. Run time:   0.16s. Est. time left: 00:00:00:00
Total run time:   0.18s
In [720]:
xlabels = ['$|0\\rangle$','$|1\\rangle$','$|2\\rangle$']
ylabels = ['$\\langle 0|$','$\\langle 1|$','$\\langle 2|$']
final_state = desuperposition(opt_dynamics[0].states[-1], F_err)
#final_state = opt_dynamics[0].states[-1]
target_state = results[0][0].objectives[0].target
plot_matrix_final_target(target_state, final_state, xlabels, ylabels, el=45, az=150)
plot_matrix_final_target(target_state, final_state, xlabels, ylabels, el=10, az=150)
plot_cardinal([target_state, final_state])
plot_evolution(opt_dynamics)

Something something

In [645]:
[plot_pulse(c, tlist) for c in opt_result.optimized_controls];
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-645-8874d4583548> in <module>
----> 1 [plot_pulse(c, tlist) for c in opt_result.optimized_controls];

AttributeError: 'NoneType' object has no attribute 'optimized_controls'
In [ ]:
plot_pulse(np.abs(opt_result.optimized_controls[0]+1j*opt_result.optimized_controls[1]), tlist)
plot_pulse(np.angle(opt_result.optimized_controls[0]+1j*opt_result.optimized_controls[1]), tlist)

In contrast to the dynamics under the guess field, the optimized field indeed drives the initial state $\ket{\Psi_{\init}} = \ket{0}$ to the desired target state $\ket{\Psi_{\tgt}} = \ket{1}$.

In [ ]:
opt_dynamics = [ob.mesolve(tlist, progress_bar=True) for ob in opt_result.optimized_objectives]
In [ ]:
qubit_occupation(opt_dynamics[0])
In [ ]:
plot_evolution(opt_dynamics)
#plot_all(opt_dynamics, ϕ)

Simulate dynamics in lab frame

In [ ]:
#rotating_pulses = [np.vectorize(H_i[1])(tlist, None) for H_i in H[1:]]
rotating_pulses = oct_result.optimized_controls

tlist2 = np.linspace(0, T, int(np.ceil(200*T/T_q)))
Ω = rotating_pulses[0]+1j*rotating_pulses[1]
Ω = np.interp(tlist2, tlist, Ω)
pulses_lab = [Ω*np.exp(1j*ω_q*tlist2), np.conj(Ω)*np.exp(-1j*ω_q*tlist2)]
H_lab = hamiltonian(ω=1.0, ampl0=1, use_rotating=False, pulses=pulses_lab)
objectives_lab = [krotov.Objective(initial_state=ψ[0], target=ψ[1], H=H_lab) for ψ in ϕ]
opt_dynamics_lab = [ob.mesolve(tlist2, progress_bar=True, options=qutip.Options(nsteps=50000)) for ob in objectives_lab]
In [ ]:
plot_pulse(Ω, tlist2)
[plot_pulse(p, tlist2) for p in pulses_lab];
In [ ]:
qubit_occupation(opt_dynamics_lab[0])
#plot_evolution(opt_dynamics_lab)
In [ ]:
plot_cardinal([opt_dynamics_lab[0].states[0]])
plot_cardinal([opt_dynamics_lab[0].states[-1]])

Frequency analysis

In [ ]:
qubit_pulses = pulses_lab
time_list = tlist2
In [ ]:
qubit_pulses = opt_result.optimized_controls
time_list = tlist
In [68]:
def plot_spectrum(pulse, tlist, mark_freq=None, pos=1, xlim=None, mark_color=['k','k','k'], title="Pulse spectrum"):
    samples = len(tlist)
    sample_interval = tlist[-1]/samples
    time = np.linspace(0, samples*sample_interval, samples)

    signal_qubit = pulse
    signal_spectrum = np.fft.fftshift(np.fft.fft(signal_qubit))
    freqs = np.fft.fftshift(np.fft.fftfreq(samples, d=sample_interval))

    plt.figure(figsize=(10,5))
    plt.plot(freqs, np.abs(signal_spectrum))  # in GHz
    if mark_freq is not None:
        if not isinstance(mark_freq, list):
            mark_freq = [mark_freq]
        mf = np.array(mark_freq)/(2*π)
        if pos==1:
            plt.xlim(0, 2*mf[0])
        elif pos==-1:
            plt.xlim(-2*mf[0], 0)
        elif xlim is not None:
            plt.xlim(xlim[0]/(2*π), xlim[1]/(2*π))
        [plt.axvline(x=m_f, ymin=0, ymax=1, color=col, linestyle='--', linewidth=1) for (m_f, col) in zip(mf,mark_color)]
    plt.title(title)
    plt.xlabel('f (GHz)');
    plt.show();

plot_spectrum(qubit_pulses[0], time_list, mark_freq=[ω_q, ω_q + K_q, ω_q - K_q], pos=1)
plot_spectrum(qubit_pulses[1], time_list, mark_freq=[ω_q, ω_q + K_q, ω_q - K_q], pos=-1)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-68-292270f37d12> in <module>
     25     plt.show();
     26 
---> 27 plot_spectrum(qubit_pulses[0], time_list, mark_freq=[ω_q, ω_q + K_q, ω_q - K_q], pos=1)
     28 plot_spectrum(qubit_pulses[1], time_list, mark_freq=[ω_q, ω_q + K_q, ω_q - K_q], pos=-1)

NameError: name 'time_list' is not defined